- 260 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 03:31:45 ]
- >>191 なんか乗り遅れて悔しいぜ。 昇順にしてない分だけ >>219 より早いかもしれない
#include<stdio.h> #include<time.h> int isprime(int value){ int i; if(value<=1) return 0; if(value%2==0) return value==2; for(i=3;i*i<=value;i+=2) if(value%i==0) return 0; return 1; } void foo(int value, int digit, int maximum){ int i, next_value; if(isprime(value)){ printf("%d\n", value); if(value>=maximum/10) return; next_value=value, digit*=10; // こっちが左から消しても素数 // next_value=value*10, digit=1; // こっちが右から消しても素数 for(i=1;i<=9;i++){ next_value+=digit; if(next_value>maximum) return; foo(next_value, digit, maximum); } } } int main(void){ int i; clock_t s; s=clock(); for(i=1;i<=9;i++) foo(i, 1, 1000000000); printf("%.3f[sec]\n", (double)(clock()-s)/CLOCKS_PER_SEC); return 0; }
|

|