这题难度低,适合c语言新手入门。
思路:
- 外层for循环遍历小于输入值的数。
- 内层for循环判断是否是素数。
- 用一个Backnumber变量记录上一个素数。若BackNumber变量与刚找到的素数 i 相减等于二,则count加一。
- 把刚找到的素数 i 赋值给BackNumber变量。
#include <stdio.h>
#include <math.h>
int main(){
int i, j; //循环变量
int count = 0; //计数
int number;
int BackNumber = 2; //存储上一个素数,初始值 2.
scanf("%d", &number);
/*循环遍历小于 number 的所有素数,统计相邻素数相减等于2的个数*/
for(i = 2; i <= number; i++){
for(j = 2; j <= sqrt(i); j++){
if(i % j == 0){//被整除则结束本层循环
break;
}
}
if(j > sqrt(i)){//统计素数队个数
if(i - BackNumber == 2){
count++;
}
BackNumber = i;
}
}
/*输出个数*/
printf("%d",count);
}
不足之处敬请斧正,谢谢!