- 締切済み
C言語 配列からランダムに素数を取り出す
初心者です 素数を生成するプログラムをネットから拾いました 順番に配列に格納されています しかし、そこからランダムな素数の配列を作りたいんです 乱数を使用すると思うんですが、 調べてみても乱数を生成するものだけで した 皆さん、よろしくお願いします #include <stdio.h> #include <stdlib.h> #include <limits.h> int isprime( unsigned long long n ); int main( int ac, char *av[] ) { unsigned long long n, n2, min_n, max_n, i; /* コマンドラインから素数探索範囲を決定する */ if( ac < 3 ) return; min_n = strtouq( av[1], NULL, 10 ); max_n = strtouq( av[2], NULL, 10 ); /* 探索範囲の数を調べる */ for( n = min_n; n <= max_n; n++ ) { /* 2n + 1 を求める */ n2 = 2 * n + 1; /* 素数かどうか調べる */ if( isprime( n2 ) ) printf( "%qu \n",n2); } } int isprime( unsigned long long n ) { unsigned long long i, n2, pn2; /* 1は素数ではない */ if( n == 1 ) return( 0 ); /* 2以外で2で割り切れたら合成数 */ if( n != 2 && n % 2 == 0 ) return( 0 ); /* sqrt(n)以上の出来るだけ小さい値を求める */ pn2 = n2 = n; while( n2 * n2 > n || n2 * n2 < n2 ) { pn2 = n2; n2 /= 2; } if( pn2 >= n ) n2 = n - 1; else n2 = pn2; /* n2以下の奇数での剰余が0かどうか調べる */ for( i = 3; i <= n2; i += 2 ) { if( n % i == 0 ) return( 0 ); } /* 素数 */ return( 1 ); } 結果 3 5 7 11 13 17 19
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6290)