1517 - 素数
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
Input
输入有多组数据。
每组一行,输入n。
Output
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
Examples
Input
70
Output
11 31 41 61
Solution C
#include<stdio.h> int main() { int i,j,a[3000],n,m,flag; m=0; for(i=2;i<=12000;i++) { a[0]=2; flag=1; for(j=0;j<=m;j++) { if(i%a[j]==0) flag=0; } if(flag) { m++; a[m]=i; } } while(scanf("%d",&n)!=EOF) { if(n<=11) printf("-1\n"); if(n>11) { printf("11"); for(i=5;a[i]<n;i++) if(a[i]%10==1)printf(" %d",a[i]); printf("\n"); } } return 0; }
Solution C++
#include<stdio.h> #include<math.h> int main() { int n,i,j,flag; while(scanf("%d",&n)!=EOF) { for(flag=0,i=2;i<n;i++) { for(j=2;j<=sqrt(i);j++) if(i%j==0) break; if(j>sqrt(i)&&i%10==1) { printf(flag?" %d":"%d",i); flag=1; } } if(!flag) printf("-1"); puts(""); } return 0; }