ヒマトーーーーーク
地獄みたことねーだろ!!コラ みなさん自分の人生にドロップアウトしてください
[29] [28] [27] [26] [25] [24] [23] [22] [21] [20] [19]
saaaaa
みなさん
夏休み二日目です
ゴールデンバッハの予想だってあたまがおかしくなりそうだ・・・とゆうことでじゃ さようなら・・・・
夏休み二日目です
ゴールデンバッハの予想だってあたまがおかしくなりそうだ・・・とゆうことでじゃ さようなら・・・・
#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, min_n, max_n, m1, m2;
/* コマンドラインから探索範囲を決定する */
if( ac < 3 )
return;
min_n = strtouq( av[1], NULL, 10 );
min_n = min_n < 6 ? 6 : min_n;
min_n = min_n % 2 == 1 ? min_n + 1 : min_n;
max_n = strtouq( av[2], NULL, 10 );
max_n = max_n % 2 == 1 ? max_n + 1 : max_n;
/* 探索範囲の数を調べる */
for( n = min_n; n <= max_n; n += 2 ) {
/* 足してnになる整数組(m1,m2)が共に素数か調べる */
for( m1 = 3, m2 = n - 3; m1 <= m2; m1 += 2, m2 -= 2 ) {
if( isprime( m1 ) && isprime( m2 ) ) {
printf( "%qu = %qu + %qu\n", n, m1, m2 );
break;
}
}
if( m1 > m2 )
printf( "%qu NG\n", n );
}
}
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 );
}
PR
この記事にコメントする
カレンダー
| 10 | 2025/11 | 12 |
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
カウンター
おれの好きな曲
最新TB
プロフィール
HN:
わかめ王子
年齢:
32
性別:
男性
誕生日:
1993/10/13
職業:
中学での
趣味:
いろいろ
自己紹介:
日々のこととかをのせていきたいです
ブログ内検索
アクセス解析
アクセス解析