#UVa:543-Goldbach’s Conjecture

灆洢 2012-03-26 00:51:35

建質數表,從1~n/2都減減看即可得解。

C++(0.055)

/*******************************************************/
/* UVa 543 Goldbach's Conjecture                       */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2012/03/26                                 */
/*******************************************************/
#include<iostream>
#include<cstdio>
using namespace std;

int main(){
  bool composite[1000005] = { true, true };
  bool find;
  int a;

  for( int i = 2 ; i <= 1000000 ; i++ )
    if( !composite[i] )
      for( int j = i+i ; j <= 1000000 ; j += i )
        composite[j] = true;

  int n;
  while( scanf( "%d", &n ) != EOF && n != 0 ){
    find = false;
    for( a = 2 ; a <= n/2 ; a++ )
      if( !composite[a] )
        if( !composite[n-a] ){
          find = true;
          break;
        }
    if( find ) printf( "%d = %d + %d\n", n, a, n-a );
    else printf( "Goldbach's conjecture is wrong.\n" );
  }

  return 0;
}

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料