PAT乙级1007
马上读研了,拿pat复习一下吸语言。
题目
让我们定义 d n d_n dn为: d n = p n + 1 − p n d_n=p_{n+1}-p_n dn=pn+1−pn,其中 p i p_i pi是第i个素数。显然有 d 1 d_1 d1=1,且对于 n > 1 n>1 n>1有 d n d_n dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<
1
0
5
10^5
105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
代码
#include<stdio.h>
#include<string.h>
//statement code
int num_list[100001];//0为质数
long result = 0;
int n,i,j;
//function section
int robustness_check1(){//robustness function1
return 0;
}
void init_num_list(){
num_list[0] = -1;
for(i = 2 ; i < 100000 ; i++){
for(j = i+i ; j < 100000 ; j+=i){
num_list[j] = 1;
}
}
}
void print_result(long n){
for(i = 2 ; i <= n-2 ; i++){
if(num_list[i] == 0 && num_list[i+2] == 0){
result++;
}
}
printf("%d", result);
return;
}
int main(){
//input code
scanf("%d",&n);
//robustness code
//function code
init_num_list();
print_result(n);
return 0;
}
总结
- scanf函数的参数是地址。不填地址会报段错误