一开始打算把质数都存在数组里,然后查了下发现c语言的数组非常原始,不能随意加减,像一幢楼已经造好了,不能把中间的一层抽出来或者再加一层到中间。于是乎,研究题目发现,每次要比较的都是相邻的两个质数。直接比较即可
通过这道题还学了和质数有关的知识点:
1.1不是质数
2.可以通过除1~ 根号n来判断n是不是质数
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int main(){
int i,j,in,sq,flag,temp=3,count=0;
//temp暂存上一个质数,flag代表是不是质数,sq是开方后的数
cin>> in;
for(i=2;i<=in;i++){
sq = sqrt(i);
flag = 1;
for(j=2;j<=sq;j++){
if(i%j==0){
flag = 0;
break;
}
}
if(flag){
if(i-temp==2){
count++;
// printf("i-temp=2:%d\n",i);
}
// printf("是质数:%d\n",i);
temp = i;
}
}
cout<< count;
return 0;
}