1007 素数对猜想 题目解析,代码、素数的判断 PTAbasic 浙大C++

题目:
在这里插入图片描述
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:
20

输出样例:
4

分析:
素数从小到大为:2,3,5,7,11,13,17……
d1=3-2=1
从这以后的差都是偶数(除了2,其他的素数都是奇数,奇数-奇数=偶数);
我们要找的就是相邻的两个素数的差为2的对数。
方法:找到小于N的所有素数,相邻的素数作差。差为2,对数加一。

求x是否为素数方法:
x依次对从2开始直到根号x的数取模。
如果存在模为0,证明这个数是因数,x不是素数。
如果2~根号x都未找到x的因数,则x是素数。

代码:


#include<iostream>
#include<cmath>
using namespace std;

int main(){
	int num,k=0,all=0;
	cin>>num;             
	int prime[num]={0};
	for(int i=1;i<=num;i++){
		bool flag=true;
		//cout<<"当前测试素数"<<i<<"结果:"<<endl;
		float in=sqrt(i);
		for(int j=2;j<=in;j++){
			if(i%j==0){
				flag=false;
				//cout<<"不是素数"<<endl; 
				break;
			}
		}
		if(flag){
			prime[k]=i;
			//cout<<"是素数"<<endl; 
			k++;
		}
	}
	for(int i=0;i<k;i++){
		//cout<<prime[i]<<" ";
		if(prime[i+1]-prime[i]==2)
			all++;
	}
	cout<<all; //素数对的数目
	
}
发布了9 篇原创文章 · 获赞 13 · 访问量 289

猜你喜欢

转载自blog.csdn.net/qnsEmma/article/details/104804823