数論

AOJ - Problem 0150 : Twin Prime

問題文 n以下で最大の双子素数を求める問題です。エラトステネスのふるいであらかじめ素数を求めておきましょう。 #include <iostream> using namespace std; const int MAX = 100001; char p[MAX] = {0}; int main(){ for(int i=2 ; i < MAX ; i++ ) p[i] = 1; for(in</iostream>…

AOJ - Problem 1200 : Goldbach's Conjecture

問題文 4以上の偶数nについて、n=a+bとなる素数の組(a,b)がいくつあるか数える問題です。(2,3)と(3,2)のように順序が逆の組は区別されないので重複して数えないようにしましょう。この問題もエラトステネスの篩で素数表をあらかじめつくっておきましょう。 #…

AOJ - Problem 1004 : Pair of Primes

問題文 n個の組(1,n)(2,n-1)(3,n-2) ... (n-1,2)(n,1)について、2つの数字がどちらも素数の組の数を求める問題です。エラトステネスの篩で最初に素数表をつくっておきましょう。 #include <iostream> using namespace std; const int MAX = 1000001; char p[MAX] = {0}</iostream>…

AOJ - Problem 1141 : Dirichlet's Theorem on Arithmetic Progressions

問題文 素数に関する問題です。エラトステネスの篩であらかじめ素数表をつくっておくとよいでしょう。 #include <iostream> #include <vector> using namespace std; const int MAX = 1000001; char p[MAX] = {0}; void f(){ for(int i=2 ; i < MAX ; i++ ) p[i] = 1; for(int </vector></iostream>…

AOJ - Problem 0009 : Prime Number

問題文 n以下の素数の個数を出力する問題です。 1は素数ではないので気をつけましょう。 素数の問題ではエラトステネスのふるいを使うことが多いです。 エラトステネスのふるいについての説明はwikipediaに詳しく載っています。 とてもわかりやすいので一度…

AOJ - Problem 0005 : GCD and LCM

問題文 2つの整数値の最大公約数と最小公倍数を出力する問題です。 最大公約数と最小公倍数についてはwikipediaにも載っています。 最大公約数 最小公倍数 #include <iostream> using namespace std; int gcd(int a, int b){ return (b>0)? gcd(b, a%b) : a ; } int l</iostream>…