又到了喜闻乐见的文字游戏环节,这个N到底是素数的下角标还是素数的上界真是只有试过样例才知道。
这题代码写着没太大问题,第一遍最后一个节点超时了,把素数判定改成了j*j<i就过了,这卡的真细,没听过翁恺课的没准想不起来这个性质。(看了题解知道这好像叫试除法,whatever~
AC代码如下
#include <stdio.h>
#include <stdlib.h>
int isprime(int i){
if(i == 2){
return 1;
}else if(i == 1){
return 0;
}else{
for(int j = 2; j * j <= i; j++){
if(i % j == 0){
return 0;
}
}
return 1;
}
}
int main()
{
int N;
scanf("%d", &N);
int primes[N];
int ct = 0;
for(int i = 2; i <= N; i++){
if(isprime(i)){
primes[ct] = i;
ct++;
}
}
int ctpair = 0;
for(int i = 0; i + 1 < ct; i++){
if((primes[i + 1] - primes[i]) == 2){
ctpair++;
}
}
printf("%d", ctpair);
return 0;
}