1007 素数对猜想

来源:互联网 发布:网络美术培训 编辑:程序博客网 时间:2024/06/15 20:31
// 让我们定义 dn 为:dn = pn + 1 - pn,其中 pi 是第i个素数。显然有 d1 = 1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。// // 现给定任意正整数N(< 105),请计算不超过N的满足猜想的素数对的个数。// // 输入格式:每个测试输入包含1个测试用例,给出正整数N。// // 输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。// 输入样例:20// // 输出样例:4#include <stdio.h>#include <math.h>bool isprime(long);// 判断一个数是否为素数,若是,返回true,若不是,返回falseint main(void){long num;// 记录用户输入,C语言的标准下int只保证32768,C++下int则占4字节,这里其实用int也可以scanf("%ld", &num);getchar();// 处理第一行末的换行long temp = 1;// 中间临时变量int count = 0;// 用以存储结果for (long i = 2; i <= num; i++){// 如果i是素数,则测试i与temp之差是否为2,若为2,结果+1// 之后用i来更新tempif (isprime(i)){if (i - temp == 2)count++;temp = i;}}printf("%d", count);// 输出结果return 0;}bool isprime(long num){if (num == 1 || num == 2)return true;long flag = long(sqrt(double(num)));for (long i = 2; i <= flag; i++){if (num%i == 0)return false;}return true;}// 非常简单

0 0
原创粉丝点击