素数的第二弹

好长时间不写了,萌新我又回来啦,在通往大佬上的路上走得那叫一个艰难啊。
最近练了一些题,有一道和素数有关,就想分享一下这道PTA上的基础题(对,我还在打基础,因为我现在刚大一),因为之前写过一个判断素数的代码,但是那种太麻烦,只适用于小的数,一旦数值过大就超时了,看了一篇文章(https://blog.csdn.net/qq_41938259/article/details/86321379)
(TIM往事如风33470348 博主写的)学会了打暴力素数表(当然自己改了一下,他是用c++写的,我还不会,就改成了c(其实c和c++差不多,不要对它们产生什么误解,只是有些地方的用法不太一样)),就试了一下,话不多说,上题。
1007 素数对猜想 (20 分)
让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4

#include<stdio.h>
#include<math.h>//因为要用到数学开方函数
int su(int n)
{
 int sqr=(int)sqrt(1.0*n);/*为什么要开方,举个例子,比如说100这个数,都知道它不是素数。将它开方后是10,你可以知道1*100=100,2*50=100,4*25=100,5*20=100,10*10=100,再之后就是20*5=100,是之前的相反过程,那么可以看出在10以内的数都有一个比较大的数与之对应,所以只需求到开方即可*/
 for(int i=2;i<=sqr;i++)
 {
  if(n%i==0)
  {
   return 0;
  }
 }
 return 1;
}
int main()
{
 int i,N;
 scanf("%d",&N);
 int num=0;
 int a[10000],j,count=0;
 j=1;
 for(i=2;i<=N;i++)
 {
  num=su(i);
  if(num==1)
  {
   a[j]=i;
   j++;
   count++;
  }
 }/*打出素数表*/
 int m=0;
 for(j=count;j>0;j--)
 {
  if(a[j]-a[j-1]==2&&j!=1)
  {
   m++;
  }
 }
 printf("%d\n",m);
 return 0;
}

推荐大家一本书,如果想比较好的理解一些代码,算法之类的东西,
《啊哈算法》,我个人感觉比较好用。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值