问题 A: 素数
[命题人 :外部导入]
时间限制 :1.000sec内存限制 :32 MB
题目描述
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
输入
输入有多组数据。
每组一行,输入n。
输出
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
样例输入Copy
70
样例输出Copy
11 31 41 61
经验总结
优先使用成熟的方案,错误:在应该用“=”的地方用了“==”。
AC代码
#include <cstdio>
int n, pnum = 0;
int prime[10010];
bool p[10010] = {false};
void find_prime()
{
for(int i = 2; i < n; i++)
{
if(p[i] == false)
{
prime[pnum++] = i;
for(int j = i + i; j < n; j += i)
p[j] = true;
}
}
}
int main()
{
while(scanf("%d", &n) != EOF)
{
find_prime();
int count = 0;
int temp[pnum];
for(int i = 0; i < pnum; i++)
{
if(prime[i] % 10 == 1)
temp[count++] = prime[i];
}
if(count == 0)
printf("-1\n");
else
{
for(int i = 0; i < count; i++)
{
printf("%d", temp[i]);
if(i != count - 1)
printf(" ");
else printf("\n");
}
}
pnum = 0;
}
return 0;
}