0
点赞
收藏
分享

微信扫一扫

pat乙级 1007 素数对猜想

ZSACH 2022-01-30 阅读 65

 一开始打算把质数都存在数组里,然后查了下发现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;
}
举报

相关推荐

0 条评论