首页 > 用户发贴区 > 编程问题提问区 > 求救~求500以内素数!
2009
04-04

求救~求500以内素数!

我用的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,不至于没输出啊~请教各位了!(如果>=还是>不影响结果就不用考虑了,我觉得应该没问题~)


求救~求500以内素数!》有 1 条评论

  1. diantouxiao 说:

    #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不是素数,当然不会有输出了,给你个建议,写程序的时候注意代码格式,适当的增加缩进,不然很容易出现错误。

留下一个回复