求100到200之间的素数,用C语言编写 我写了下面的程序 哪位高手可以帮我纠错啊

2025-04-27 10:09:43
推荐回答(4个)
回答1:

#include
void main ()
{
int i=100,c,a;
while(i<=200)
{
c=2;
while(c<=i)//只要除到这个数的平方根就行了、

{
a=i%c;
/*你这个绝对不行的,素数一般是要使用除的,而不是求余

比如 150不是素数。但是150%10=0 这个是求余*/

if(a==0)
{
printf("%d\n",i);
c=i+1;//在已经知道一个数是素数的情况下可以跳出里面的循环了,对不对
}
else c=c+1;
}
i=i+1;
}
}

给你一个世界上最强(不是最强之一)的求素数的程序,
找QQ504449327要,你就说“要最好的求素数的程序”

回答2:

#include
void main ()
{
int i=100,c,a;
while(i<=200)
{
c=2;
while(c<=i)
{
a=i%c;
if(a==0)
{
printf("%d\n",i);
c=i+1;//这里赋值后会有点问题。
}
else c=c+1;
}
i=i+1;
}
}
以下是我编的!可以看下:
#include
#include
void main()
{ int m,i,k,n=0;
for(m=101;m<=200;m++)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
{printf("%4d",m);
n++;
}
if(n%10==0)
printf("\n");
}
printf("\n");
}

回答3:

这样当然错了啊;你输出的不是素数,而是接着的都输出;因为
a=i%c;
if(a==0)
{
printf("%d\n",i);
c=i+1;
}
系统就把能被c整除的都输出
我是这样给你改的:
#include
void main ()
{
int i=100,c,a,flag=1;
while(i<=200)
{
c=3;
while(c {
a=i%c;
if(a==0)
{
flag=0;
break ;
}
c+=2;
}
if(flag==1)
{
printf("%d ",i) ;
i++;
}
else
{
flag=1;
i++;
}

}
getch();
}

回答4:

if(a==0)
应该是if(a!=0)