素数输出

给出两个正整数m,n(1 ≤ m,n≤ 100000),求m与n之间的全部素数,每行输出10个。

注:素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

Input

1   100

20   50

测试数据有多行,每行是两个正整数。

 Output

2  3  5  7  11  13  17  19  23  29

31  37  41  43  47  53  61  67  71

73  79  83  89  97

23  29  31  37  41  43  47

对每个测试输出若干行结果,每个数字后跟一个空格

还是先上超时的代码吧!!!

#include <stdio.h>
int main(void)
{
    int m,n;
    while(scanf("%d %d",&m,&n)!=EOF)
    {
        int count=0;
        for(int i=m;i<=n;i++)
        {
            int a=2;
            while(a<i)
            {
                if(i%a==0)
                {
                    break;
                }
                a++;
            }
            if(i==a)
            {
                printf("%d ",i);
                count++;
                if(count%10==0)
                {
                    printf("\n");
                }
            }
        }
        printf("\n");
    }
}


经过修改变成了

#include <stdio.h>
#include <math.h>
int main(void)
{
    int m,n,k,j;
    while(scanf("%d %d",&m,&n)!=EOF)
    {
        int count=0;
        for(int i=m; i<=n; i++)
        {
            if(i==1)
            {
                continue;
            }
            k=sqrt(i);
            for (j=2;j<=k;j++)
                if (i%j==0) break;
            if (j>k)
            {
                printf("%d ",i);
                count++;
                if(count%10==0)
                {
                    printf("\n");
                }
            }
        }
        printf("\n");
    }

}




猜你喜欢

转载自blog.csdn.net/weixin_39915192/article/details/79037502