PAT乙级1013答案c语言版本

1013 数素数 (20分)

令 P​i表示第 i 个素数。现任给两个正整数 M≤N≤10000,请输出 PM到 PN的所有素数。
输入格式:

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

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

思路

把他要的前N个素数都先记录下来,最后输出M-N个素数就行,感觉还是可以简单点的,后面有机会再刷的时候改。最后一个数据因为要输出末尾没有空格,所以最后单独输出

#include
#include
#include

bool is_sushu(int n);//判断是不是素数

int main()
{
    int a[10000]={0},count=0,k=1;
    int M=0,N=0;
    scanf("%d%d",&M,&N);
    do{
        k++;
        if(is_sushu(k)) a[count++]=k;
      }while(count<N);//记录前N个素数
    count=0;
    //输出第M-(N-1)个素数,最后一个因为不要空格所以单独输出
    for(int i=M-1;i<=N-2;i++)
    {
        count++;
        if(count<=9) printf("%d ",a[i]);
        else
        {
            printf("%d\n",a[i]);
            count=0;
        }
    }
    printf("%d",a[N-1]);
}

bool is_sushu(int n)
{
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
			return false;
	}
	return true;
}

你可能感兴趣的:(pat考试)