【PAT乙级】数素数
题目描述:
令表示第i个素数。现任给两个正整数M <= N <= 10000,请输出到的所有素数。
输入描述:
输入在一行中给出M和N,其间以空格分隔。
输出描述:
输出从到的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
解题思路:
首先自定义一个isPrime(int n)的函数用来判断一个数是否为素数,然后再主函数中用count来记录素数的个数,当count在[m,n]这个范围内时,对这个素数进行输出,需要注意的是行末没有多余空格,每10个素数换一行。
AC代码:
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
if(n<=1)
{
return false;
}
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int main()
{
int m,n;
cin >> m >> n;
int a[10001];
for(int i=1, j=1;j<=10000;i++)
{
if(isPrime(i))
{
a[j++] = i;
}
}
int count = 0;
for (int i = m; i <= n; i++)
{
if(count == 0)
{
cout << a[i];
}
else
{
cout << " " << a[i];
}
count++;
if(count%10 == 0)
{
count = 0;
cout << endl;
}
}
return 0;
}
原文链接:【PAT乙级】数素数
麦芽雪冷萃 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!