700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【C语言习题】两素数之差为2 则称该两素数为双胞胎数。求出[2 300]内双胞胎数。

【C语言习题】两素数之差为2 则称该两素数为双胞胎数。求出[2 300]内双胞胎数。

时间:2020-03-07 15:09:48

相关推荐

【C语言习题】两素数之差为2 则称该两素数为双胞胎数。求出[2 300]内双胞胎数。

问题

两素数之差为2,则称该两素数为双胞胎数。求出[2,300]内:

所有素数并保存到文件prime.txt中;有多少对双胞胎数;最大的一对双胞胎数。

分析

首先脑子里要有文件操作的框架,

其次要知道素数怎么求。这里仅给出一种求素数的方法:就是判断n是否可以被n\sqrt nn​整除,

然后在找出的素数中找其他数,就很简单了。

代码

#include <stdio.h>#include <math.h>#define N 300int prime(int n){//判断素数int k,i;k = sqrt(n);for(i=2;i<=k;i++)if(n%i==0)//如果n被i整除,终止内循环,此时i<k+1break;if(i>=k+1)//若i≥k+1,表示n未曾被整除return 1;//应确定n是素数else return 0;}int main(){int n,l,m=0,h[N],j=0,p=0,x=0,y=0,o[N];FILE *fp;fp = fopen("prime.txt","w");for(n=2;n<=300;n++) {//遍历2~300对每个n进行判定l = prime(n);if(l) {h[j] = n;j++;fprintf(fp, "%d\t", n);//将找到的素数写入文件m++;//m用来在文件中控制换行,一行输入10个素数if(m%10==0)//m累计到10的倍数,换行fprintf(fp,"\n");}}int aj = 0;for(j=0;j<=300;j++)//找出双胞胎数if(h[j+1]-h[j]==2) {aj = j;//最大双胞胎数所对应的下标p++;//统计有几对双胞胎数}printf("%d,%d\n",h[aj],h[aj+1]);printf("%d对\n",p);fclose(fp);return 0;}

结果

prime.txt

2357111317192329313741434753596167717379838997101103107109113127131137139149151157163167173179181191193197199211223227229233239241251257263269271277281283293

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。