5-13 素数对猜想 (20分)
2017-05-06 00:56
239 查看
让我们定义dn为:dn
= p(n+1)−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数
解析:学会判断质数
#include <stdio.h>
#include <math.h>
int IsPrime( int n ) {
if ( n == 1 ) //1既不是质数也不是合数
return 0;
else if ( n == 2 ) // 2是合数
return 1;
else {
double k = sqrt(n);
int i;
//i <= k 比如 n = 25,k = 5; 25取余2,3,4,5;只有到5的时候才能判断它是合数
for ( i = 2; i <= k; i++ )
if ( n % i == 0 )
return 0;
}
return 1;
}
int main () {
int n, prime, lastPrime = 3, cnt = 0;
scanf("%d", &n);
if ( n < 5 ) //5之前不存在差为2的相邻素数对
printf("0");
else {
for ( prime = 5; prime <= n; prime += 2 ) //直接加2,因为偶数一定不是质数(除2)
if ( IsPrime(prime) ) {
if ( prime - lastPrime == 2)
cnt++;
lastPrime = prime; //更新上一个质数
}
printf("%d", cnt);
}
return 0;
}
= p(n+1)−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数
N(<105<10^5),请计算不超过
N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
解析:学会判断质数
#include <stdio.h>
#include <math.h>
int IsPrime( int n ) {
if ( n == 1 ) //1既不是质数也不是合数
return 0;
else if ( n == 2 ) // 2是合数
return 1;
else {
double k = sqrt(n);
int i;
//i <= k 比如 n = 25,k = 5; 25取余2,3,4,5;只有到5的时候才能判断它是合数
for ( i = 2; i <= k; i++ )
if ( n % i == 0 )
return 0;
}
return 1;
}
int main () {
int n, prime, lastPrime = 3, cnt = 0;
scanf("%d", &n);
if ( n < 5 ) //5之前不存在差为2的相邻素数对
printf("0");
else {
for ( prime = 5; prime <= n; prime += 2 ) //直接加2,因为偶数一定不是质数(除2)
if ( IsPrime(prime) ) {
if ( prime - lastPrime == 2)
cnt++;
lastPrime = prime; //更新上一个质数
}
printf("%d", cnt);
}
return 0;
}
相关文章推荐
- python3之1007.素数对猜想 (20分)
- 5-27 素数对猜想 (20分)
- 自测-2 素数对猜想 (20分)
- 自测-2 素数对猜想 (20分)
- 所谓哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。
- PAT 乙级 1007. 素数对猜想 (20) Java版
- 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT 素数对猜想 Java版本
- 1007. 素数对猜想 (20) python篇
- Java - PAT - 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT乙级题解( 1007. 素数对猜想 )
- PAT_1007. 素数对猜想 (20)
- PAT 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT 1007 素数对猜想 C语言
- PAT-B 1007. 素数对猜想
- 【PAT】(乙级)1007. 素数对猜想 (20)
- PAT_1007 素数对猜想