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; //素數對的數目
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章