题目1163:素数
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:13186
解决:4618
-
题目描述:
-
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
-
输入:
-
输入有多组数据。
每组一行,输入n。
-
输出:
-
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
-
样例输入:
-
100
-
样例输出:
-
11 31 41 61 71
-
来源:
- 2008年北京航空航天大学计算机研究生机试真题
-
#include <cstdio> #include <cstring> int prime[10005];//如果判定为素数则值为 0,其他非素数都会被一次置1 int main(){ memset(prime,0,sizeof(prime)); prime[0]=1; prime[1]=1; int a=2; while(a<10001){ if(prime[a]==0){ for(int i=2;;i++){ int temp=a*i; if(temp>10000)break; prime[temp]=1; } } a++; } int n,flag; while(scanf("%d",&n)!=EOF){ flag=0; for(int i=1;i<n;i++){ if(prime[i]==0&&i%10==1&&flag==0){ printf("%d",i); flag++; }else if(prime[i]==0&&i%10==1&&flag!=0){ printf(" %d",i); } } if(flag==0){ printf("-1"); } printf("\n"); } return 0; }
素数筛法。 -