我用的C不是C#。
我现在写一个求500以内素数的程序,我写的事这样:
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,n=0;
for(i=2;i <=500;i++)
k=sqrt(i);
{for(j=2;j <k;j++)
if(i%j==0)
break;
if(j>=k)
{printf(“%d “,i);
n++;
if(n%5==0)
printf(“\n”);
}
}
getch();
}
这个是有问题的,没有输出。(就是turboC停在那)
稍微改动一下,不用K,循环次数增加了
#include <stdio.h>
#include <math.h>
main()
{
int i,j,n=0;
for(i=2;i <=500;i++)
{for(j=2;j <i;j++)
if(i%j==0)
break;
if(j>=i)
{printf(“%d “,i);
n++;
if(n%5==0)
printf(“\n”);
}
}
getch();
}
这样就对了~~
但是仅仅多了个k,不至于没输出啊~请教各位了!(如果>=还是>不影响结果就不用考虑了,我觉得应该没问题~)
>> 本文固定链接: http://www.vcgood.com/archives/3133
#include <math.h>
main()
{
int i,j,k,n=0;
for(i=2;i <=500;i++)
{
k=sqrt(i); /*进入括号*/
for(j=2;j <=k;j++) /*j<=k,不然你会少判断它的平方根,例如4中2就没考虑到
是不对的*/
if(i%j==0)
break;
if(j>k) /*这里要写成大于*/
{printf(“%d “,i);
n++;
if(n%5==0)
printf(“\n”);
}
}
getch();
}
上面的就是可以得到结果的;至于你的没有输出是因为你的for循环只是包含了一个sqrt语句,当退出时候i=500,k=22,当然了500不是素数,当然不会有输出了,给你个建议,写程序的时候注意代码格式,适当的增加缩进,不然很容易出现错误。