一道PAT乙级练习题,楼主不才,一直都没能全部通过,始终有个测试点不能通过,希望大神们能帮忙改改错误,楼主顺便说说我的思路啦。大家互相交流交流0.0
素数对猜想
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
1 |
20 |
输出样例:
1 |
4 |
楼主语文可能不是太好,每次看题都要看好多次才能懂题目的意思。
既然语文不好,那我就画图为大家解释下题目的意思啦!
题目解释

题目思路
楼主的思路可能和别人的不太一样,但是也是楼主自己辛辛苦苦想出来哒!
运行截图

代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include<stdio.h> #include<math.h> int sushu[100000]={0}; //全局变量 “素数数组” int sushupanduan(int n)//素数判断函数,是素数就返回1 { int i; for(i=2; i<=sqrt(n); i++) { if(n%i==0) return 0; } return 1; } void sushuIN(int n) { int i; for(i=2; i<n; i++) { sushu[i] = sushupanduan(i); } } int main() { int i, n, count=0; scanf("%d", &n); sushuIN(n); for(i=2; i<n; i++)//找寻素数对 { if(sushu[i]==1) { if(sushu[i+2]==1) count++; } } printf("%d\n", count); return 0; } |
本次分享就到这里,如有兴趣请关注小文’s blog
如果你有C语言难题可以在评论区留言,博主将在第二天为您讲解
如有任何意见请留言或者评论,本人一定采取。
因为那组测试包含了n