A. c语言孪生素数,输入一个数,输出小于那个数的最大孪生素数,用函数。

代码

#include<stdio.h>
#include<math.h>

//判断是否是素数,是返回,不是返回0
intis_prime(intn)
{
inti,tmp=(int)sqrt(n);
for(i=2;i<=tmp;++i)
{
if(n%i==0)
{
return0;
}
}
return1;
}

intmain()
{
inti,n;
printf("请输入一个数:");
scanf("%d",&n);

for(i=n-1;i-2>=2;--i)//小于n,所以让i从n-1开始
{
if(is_prime(i)&&is_prime(i-2))
{
printf("小于%d的最大孪生素数为:%d和%d ",n,i,i-2);
break;
}
}

return0;
}

运行:

B. c语言寻找[m,n]区间内所有孪生素数并输出

#include<stdio.h>
#include<conio.h>
#include<math.h>
intprime(intn)
{
intr,i;//此处定义的t不懂你有什么用,反正我没用
r=sqrt(n);
for(i=2;i<=r;i++)
{
if(n%i==0)//此处n%i==0,说明不是素数,立刻跳出循环,你刚好反了
return0;
}
return1;
}
intmain()
{
intm,n,i,t=0;
printf("请输入范围m,n ");
scanf("%d%d",&m,&n);
for(i=m;i<=n-2;i++)//此处限制i<=n-2,不然prime(i+2)超过范围;另外i每次自加1,//不能加2
{
if(prime(i)&&prime(i+2))
{
t+=1;
printf("(%d,%d) ",i,i+2);
}
}
printf("%d ",t);
if(t==0)
printf("无孪生素数!");//这个输出格式应该在循环外判定
getch();
}

C. C语言孪生素数问题;

#include <stdio.h>

#include<math.h>

int main()

{

long c,d,i,n,a,m=0,q=0,w=0;

printf("please input c,d(c>2): ");

scanf("%d,%d",&c,&d);

printf("c=%d d=%d ",c,d);

for (i=c;i<d-1;i++)

{q=1;

for (n=2;n<sqrt(i);n++)

{

if ((i%n)==0)

{

q=0;

break;

}

}

w=1;

for (a=2;a<=sqrt(i+2);a++)

{

if (((i+2)%a)==0)

{

w=0;

break;

}

}

if ((w==1)&&(q==1))

{

printf("(%d,%d) ",i,i+2);

m++;

if(m%20==0)getchar();

}

}

printf("total=%d ",m);

return 0;

}

D. C语言输出n以内的孪生素数

按照你的要求编写的输出n以内的孪生素数的C语言程序如下

#include<stdio.h>

intisPrime(intn){

inti;

for(i=2;i<n;i++)

{

if(n%i==0)return0;

}

return1;

}

intmain(){

inti,n;

printf("请输入一个正整数:");

scanf("%d",&n);

for(i=2;i<=n;i++){

if(isPrime(i)==1&&isPrime(i+2)==1){

printf("%d和%d是孪生素数 ",i,i+2);

}

}

return0;

}

E. C语言编程序,打印前10对孪生素数。

加分加分
#include<stdio.h>
#include <math.h>
int isprime(int n)
{
int i;
for(i=2;i<=(int)sqrt(n);i++)
if(n%i==0) return 0;
return 1;
}
void main()
{
int i,count;
for (i=2,count=0;count<=10;i++)
{
if(isprime(i) && isprime(i+2))
{printf("(%d,%d)\n",i,i+2);count++;}
}
}

F. c语言:寻找1000以内孪生素数

#include<stdio.h>
intrsss(intx)
{
inty=x+2,i,c=0;//<=================
for(i=2;i<x;i++)
{
if(x%i==0)
c++;
}
for(i=2;i<y;i++)
{
if(y%i==0)
c++;
}
if(c==0)
printf("%d-%d ",x,y);
}
intmain()
{
inti;
for(i=2;i<=998;i++)
{
rsss(i);
}
getch();
}

G. 求C语言输出1000对孪生素数的程序,程序对每个数只检验一次

#include "stdio.h"

int prime(int n){//素数

int i;

for(i=3;i*i<=n;i+=2)

if(!(n%i))

return 0;

return 1;

}

int main(int argc,char *argv[]){

int n,k;

for(k=0,n=3;k<1000;n+=2)

if(prime(n) && prime(n+2))

printf(++k%7 ? "%6d/%-6d " : "%6d/%-6d ",n,n+2);

if(k%7)

printf(" ");

return 0;

}

当i==3时,(temp=(int)(sqrt(i)))==1

因为temp==1了,所以for(int j=2;j<=temp;++j)的循环就直接“跳过”了,也就不会执行循环体内的程序解决办法是将for(int j=2;……)改为for(int j=1;……)将循环体内的if(i%j==0)改为if(j!=1 && i%j==0)更简单的办法是不利用平方根求素数的捷径,而是直接对小于i的所有整数进行判断。

(7)孪生素数c语言扩展阅读:

素数定理说明了素数在趋于无穷大时变得稀少的趋势。而孪生素数,与素数一样,也有相同的趋势,并且这种趋势比素数更为明显。

由于孪生素数猜想的高知名度以及它与哥德巴赫猜想的联系,因此不断有学术共同体外的数学爱好者试图证明它。有些人声称已经证明了孪生素数猜想。然而,尚未出现能够通过专业数学工作者审视的证明。

H. 孪生素数(C语言)

#include<stdio.h>
int isZhiShu(int m)
{
for(int i=2;i<=m/2;i++)
if(m%i==0)
{
return 0;
break;
}
return 1;
}

int main()
{
int n,i,a=0,b=0;
printf("please input a num");
scanf("%d",&n);
for(i=n;i>1;i--)
if(isZhiShu(i)==1)
{
a=b;
b=i;
if(a-b==2)
{
printf("the number is %d and %d",b,a);
break;
}
}
}

I. c语言请调用判断是否素数的函数,实现输出1000以内的孪生素数

首先明白什么事孪生素数:孪生素数就是指相差2的素数对,例如 3和5,5和7,11和13。然专后看代码:

#include<stdio.h>
#include<math.h>

//判断属是否是素数,是返回1,不是返回0
intis_prime(intn)
{
inti,tmp=(int)sqrt(n);
for(i=2;i<=tmp;++i)
{
if(n%i==0)
{
return0;
}
}
return1;
}

intmain()
{
inti;
for(i=2;i+2<1000;++i)
{
if(is_prime(i)&&is_prime(i+2))
{
printf("%d%d ",i,i+2);
}
}

return0;
}

这是运行结果:

J. C语言编程。。孪生素数

楼主的两个for循环用的不对,另外整个流程也是有问题的。改正的代码如下:

#include<stdio.h>
#include<math.h>
intmain()
{
inta,b;/*输入的两个数据范围*/
inti,j,k;
intnum=0,s;/*素数个数,素数标志*/
scanf("%d%d",&a,&b);
for(i=a;i+2<=b;i++)
{
s=1;/*先假设i是素数*/
k=sqrt(i);
for(j=2;j<=k;j++)
{
if(i%j==0)
{
s=0;/*i不是素数*/
break;
}
}
if(s)
{
k=sqrt(i+2);
for(j=2;j<=k;j++)
{
if((i+2)%j==0)
{
s=0;/*i+2不是素数*/
break;
}
}
if(s)
{
++num;/*i+2是素数*/
printf("第%d个孪生素数[%d,%d] ",num,i,i+2);
}
}
}
return0;
}


二、用GCC编译测试结果: