pat—数素数(输入第n个素数和第m个素数之间的所有素数)

题目:令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。

输入描述:输入在一行中给出M和N,其间以空格分隔。

输出描述
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

解题思路
其实拿到这个题不要怕,一看没什么是吧,就是在判断素数的基础上加了一些条件而已。所以解这个题我们先要会判断素数,这会了以后,我们定义一个变量来作为计数器,判断计数器是否满足条件,一旦满足就输出素数即可,一旦大于Pm就break;

/*纯c语言写的*/
#include<stdio.h>
#include<math.h>
int sushu(int k)
{
    int i;
    for(i=2;i<=sqrt(k);i++)   /*这里一定要用sqrt函数这样可以避免数字太大,运行超时*/
        if(k%i==0)
            return 0;
    return 1;
}

int main()
{
    int i,j,sum=0,k,a=0,b=0;
    int n,m;
    scanf("%d %d",&n,&m);
    for(i=2; ;i++)
    {
        if(sushu(i)==1)
        {
            sum+=1;
            if(sum>=n && sum<m)
            {
                b+=1;
                if(b==10)
                {
                    printf("%d",i);
                    b=0;
                }
                else
                {
                    printf("%d ",i);
                }
                a+=1;
            }
            if(sum==m)
            {
                printf("%d",i);
                a+=1;
            }
            if(a==10)
            {
                printf("\n");
                a=0;
            } 
        }
        if(sum>m)
        {
            break;
        }
    }
    return 0;
}

我也不是高手就是想写点东西……..最近在刷PAT的题,就想写点东西充实一下,so,看看就好,如果对你有用,那么就请期待吧

猜你喜欢

转载自blog.csdn.net/qq_40833182/article/details/81369037