用筛选法求100之内的素数。 每行输出10个素数,每个素数占5列,靠右对齐。 谁可以帮帮我看看哪里错了呀 亲

#include <stdio.h>
#include <math.h>
int main()
{
int a[101],m,n,i,b=1;
for (i=0;i<=100;i++)
a[i]=i;
printf ("2");
for (i=3;i<100;i=i+2)
{
m=sqrt(i);
for (n=2;n<=m;n++)
{
if ( (a[i] % n) == 0 )break;
if (i>=m+1){
printf("%d",a[i]);
b++;
}
if (b % 5 == 0)printf ("\n");
}
return 0;
}

#include <stdio.h>

#include  <math.h>

void main()

{

    int a[101],m,n,i,b=1,flag;

    for (i=0;i<=100;i++)

        a[i]=i;

printf ("2 ");

    for (i=3;i<=100;i+=2)

    {

        m=(int)sqrt(i);

flag=0;

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

{

if ( (a[i] % n) == 0 )

{

flag=1;

break;

}

}

if(flag==0)

{

printf("%d ",a[i]);

b++;

if (b % 5 == 0)printf ("\n");

}

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-05

#include <stdio.h>

#include  <math.h>

int main()

{

    int m,n,i,b=0;

    printf ("%3d",2);

    ++b;

    for (i=3; i<100; i=i+2)

    {

        m=sqrt(i);

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

        {

            if ( i% n== 0 )

                break;

        }

        if (n>m)

        {

            printf("%3d",i);

            ++b;

            if (b%5==0)

            printf ("\n");

        }

       

    }

    return 0;

}

第2个回答  2012-12-05
这是按最少修改原则改写的你的程序:
#include <stdio.h>
#include <math.h>
int main()
{
int a[101],m,n,i,b=1;
for (i=0;i<=100;i++)
a[i]=i;
printf ("%5d",2);
for (i=3;i<100;i=i+2)
{
m=sqrt(i);
for (n=2;n<=m;n++)
//{
if ( (a[i] % n) == 0 )break;
if (n>=m+1){
printf("%5d",a[i]);
b++;
if (b % 5 == 0)printf ("\n");
}
}
return 0;
}本回答被提问者和网友采纳
第3个回答  2012-12-05
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,flag,m = 0;
for ( i = 2; i <= 100; i++)
{
flag = 0;
for (j = 2; j < sqrt(i); j++)
{
if (i%j == 0)
{
flag = 1;
break;
}
}
if (0 == flag)
{
m++;
printf("%5d",i);
if (m % 10 == 0)
{
printf("\n");
}
}
}
printf("\n");
}

linux:~ # ./test
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
第4个回答  2012-12-05
sqrt() 函数的返回类型不是int。
相似回答