宝塔设置加速wordpress站点,wordpress推荐书籍,wordpress 归档 文章分类,设计主题和设计理念题目
让我们定义dn为#xff1a;dn pn1 −pn #xff0c;其中pi 是第i个素数。显然有d1 1#xff0c;且对于n1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(105 )#xff0c;请计算不超过N的满足猜想…题目
让我们定义dn为dn pn1 −pn 其中pi 是第i个素数。显然有d1 1且对于n1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(105 )请计算不超过N的满足猜想的素数对的个数。
分析
首先需要判断小于N的数哪些是素数然后用数组存起来接着循环访问该数组用一个变量count记录素数对个数最后输出count即可。
判断素数两种方法
用n除以2~n-1的数如果余数都不为0即为素数用n除以2~sqrt(n)的数如果余数都不为0即为素数\
方法选择
第一种最直接也最简单但是当数据较大时花费时间过久第二种需要调用库函数sqrt需要类型转换还要注意个别数值能否满足基于效率考虑选择第2种
AC代码
#includeiostream
#includecstdio
#includecmath
using namespace std;
int main()
{int i,j,n,count0,count_sushu0;cinn;int *sushu(int *)malloc(n*sizeof(int));//动态创建n个int大小的内存sushu指向该块内存首地址。//int sushu[n];//C99标准旧版本编译器可能不支持/*素数判断方法需从2开始题目给的N是正整数包含1再结合素数对的定义分为两种情况分别判断。*/if(n3)//此时素数对个数为0{}else{for(i2;in;i){int tempi;if(temp2){count_sushu;sushu[count_sushu-1]temp;}else{int temp2(int)sqrt((double)temp)2;//double转为int类型时会有精度丢失for(j2;jtemp2;j){if(temp%j0){break;}if(jtemp2-1){count_sushu;sushu[count_sushu-1]temp;}}}}}for(i0;icount_sushu;i){if(i1count_sushu){if((sushu[i1]-sushu[i])2){count;}}}coutcount;return 0;
}有任何问题欢迎在评论区留言博主每天都会看的哟
更多题解 pat 乙级 题解汇总持续更新C