1007. 素数对猜想 (20)
2017-10-13 15:10
381 查看
原题: https://www.patest.cn/contests/pat-b-practise/1007
关于素数判断C语言实现请参考:
http://www.cnblogs.com/asheng2016/p/7647278.html
分析题意: 题目是让我们得出
[2, n]中所有的素数对个数, 例如
2 3 5 7 11 13 17 19,
那么输出
4.
实现思路: 比较直接的方法就是先把
[2, n]所有的素数拿出来, 单门放到另一个数组中, 然后
两两循环判断差值是否为2, 从而确定有多少个素数对.
第2种方法是, 每次把当前素数的值保存下来, 等循环到下个素数时, 作差值比较是否等于2, 从而
确定一个素数对. 下面的代码使用第2种方法实现.
完整代码:
#include <stdio.h> int isPrime (int n); int main () { int pre = 3; // 保存前一个素数的值 int result = 0; // 素数对个数 int i; int n; scanf("%d", &n); // 输入的n若果小于5, 直接返回0, 这是我们人工判断 for (i=5; i<=n; i++) { if (isPrime(i) == 1) { if ((i - pre) == 2) { result += 1; } pre = i; // 只要当前的i为素数, 我们就更新pre的值 } } printf("%d\n", result); return 0; } // 是返回1, 不是返回0 int isPrime (int n) { int i = 2; int flag = 1; // 默认n是素数 while (i * i <= n) { if (n % i == 0) { flag = 0; break; } i++; } return flag; }
相关文章推荐
- PAT 1007. 素数对猜想 (20) (C语言)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT (Basic Level) Practise (中文) 1007素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT(乙) 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT - 1007. 素数对猜想 (20)
- PAT 1007 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- pat 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- 1007. 素数对猜想 (20)
- PAT乙级1007. 素数对猜想 (20)