08/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;
}