PTA |「Cの実験指導と演習をプログラミング言語(第3版)、」実験的検証4-2-3「ゴールドバッハの予想」(20点)

タイトル

数学の有名な「ゴールドバッハ予想」大体の手段は:2以上の任意の偶数の大きなは、常に2つの素数の和として表現することができます。例えば:24 + 5 = 19、ここで、5及び19は素数です。本研究では、タスクが20未満百万ドルは2つの素数に分けることができ偶数および検証するためのプログラムを設計することです。

入力フォーマット
範囲】所与の行(2、2 000 000 000を入力してもN.

出力フォーマット
形式の行で「N = P + Q」P≤qは素数である、N個の出力の素数分解。そのような分解は一意ではないため、すべての溶液は少なくとも必要な出力Pで解決すべき、(例えば24はまた、7 + 17に分けることができます)。

サンプル入力:

24

出力例:

24 = 5 + 19

ACコード

  • 最大入力はふるいメソッドを使用する方法、20億ではありません。(char型によって必要とされる2G空間)、従来のトラバース 2 Q (2 \ SQRT {Q}) qは素数、p個の共感であることを確認します。
#include<stdio.h>
#include<stdio.h>
int prime( int p ){
	int ret,i;
	if(p%2==0&&p!=2)ret=0;
	else{
		ret=1;  //如果是2则不进入循环 
		for(i=3;i<=sqrt(p);i+=2){  //每次只检查奇数
			if(p%i==0){ret=0;break;
			}
		}
	}
	return ret;
} 
int main(){
    int N,i;
    scanf("%d",&N);
	for(i=2;i<N/2;i++){  //理论上应该只验证i<N/2范围
		if(prime(i)&&prime(N-i)){
			printf("%d = %d + %d",N,i,N-i);
			break;
		}
	}
    return 0;
}

ここに画像を挿入説明

公開された125元の記事 ウォンの賞賛8 ビュー5365

おすすめ

転載: blog.csdn.net/weixin_44421292/article/details/104525233