2014年第一题 超素数
题意:
超素数就是这样的数,比如2333,2是素数,23是素数,233是素数,2333是素数,找出所有的四位超素数。每行输出六个,数之间空格隔开。
思路:
先用埃氏筛选获取素数表,然后遍历每个四位数判断是否为素数。
代码:
1 /* 2 2014_1_超素数 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 #include <math.h> 8 #include <stdlib.h> 9 #include <time.h> 10 11 #define maxn 10001 12 // 若pri[i]=0表示i为素数 13 int pri[maxn] = {0}; 14 15 // 素数表的获取,埃氏筛选 16 void findPrime() { 17 int i, j; 18 // 1 不为素数 19 for(i=2; i<maxn; ++i) { 20 if(!pri[i]) { // 为素数 21 for(j=i+i; j<maxn; j+=i) { 22 pri[j] = 1; // 筛选倍数 23 } 24 } 25 } 26 } 27 28 int main() { 29 int i, pnum=0; 30 findPrime(); // 获取素数表 31 for(i=2000; i<10000; ++i) { // 挨个遍历 32 int n1=i/1000, n2=i/100,n3=i/10; 33 // 判断是否为超素数 34 if(!pri[n1] && !pri[n2] && !pri[n3] && !pri[i]) { 35 printf("%d", i); 36 if(pnum%6 != 5) { 37 printf(" "); 38 } else { 39 printf("\n"); 40 } 41 pnum++; 42 } 43 } 44 45 return 0; 46 }