Legend
For a given integer n ≤ 4 ⋅ 104, find all positive integers k ≤ n such that k2=p1 ⋅ p2+1, where p1 and p2are primes.
Input format
The first line of input contains one integer n (4 ≤ n ≤ 4 ⋅ 104).
Output format
Print all appropriate values of k in arbitrary order. Separate consecutive values by spaces and/or newlines.
Sample 1
| Input | Output |
|---|---|
4 |
4 |
Sample 2
| Input | Output |
|---|---|
10 |
4 6 |
------------------------------------------------------------------------------------------------------------------------------%
------------------------------------------------------------------------------------------------------------------------------%
题意: k2=p1 ⋅
p2+1,输出小于 n 的所有 k 值。
很简单的一道题,打表让我打坏了,只能搜模板了。搜到一个不错的模板。
8<--------------------------------------------------------------------------------------------------------------------------%
#include<stdio.h>
#include<math.h>
#include<string.h>
#define MAX_NUMBER 40010
int prime_number = 0;
int prime[MAX_NUMBER];
int ans[MAX_NUMBER];
void getPrime() {
prime[++prime_number] = 2;
for (int i = 3; i <= MAX_NUMBER; i++) {
int j;
for (j = 1; prime[j] * prime[j] <= i; j++) {
if (i % prime[j] == 0) {
break;
}
}
if (prime[j] * prime[j] > i) {
prime[++prime_number] = i;
}
}
}
int main(){
int n;
int cnt = 0;
getPrime();
for(int i=1; i<prime_number; i++){
if(prime[i]+2==prime[i+1])
ans[cnt++] = prime[i]+1;
}
while(scanf("%d", &n) != EOF){
for(int i=0; i<cnt; i++){
if(ans[i] <= n)
printf("%d\n", ans[i]);
else break;
}
}
return 0;
}
本文详细解读了Yandex 2013比赛中关于Primeproblem的题目,包括输入输出格式、样例分析以及解决思路。通过打表与模板搜索的方法,轻松解决此类数学与算法结合的问题。
1227

被折叠的 条评论
为什么被折叠?



