特殊的质数肋骨

只需注意到质数肯定不是偶数,能节约枚举数目.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> int isprime(int n) { int i; if(n == 2) return 1; if(n%2 == 0) return 0; for(i=3; i*i <= n; i+=2) if(n%i == 0) return 0; return 1; } void sprime(int n, int ndigit) { if(ndigit == 0) { printf( "%d\n", n); return; } n *= 10; if(isprime(n+1)) sprime(n+1, ndigit-1); if(isprime(n+3)) sprime(n+3, ndigit-1); if(isprime(n+7)) sprime(n+7, ndigit-1); if(isprime(n+9)) sprime(n+9, ndigit-1); } int main() { int n; while(scanf("%d", &n)!=EOF){ sprime(2, n-1); sprime(3, n-1); sprime(5, n-1); sprime(7, n-1);
} return 0; }
posted @ 2015-04-14 19:29  王皓月|r  阅读(233)  评论(0)    收藏  举报