class Prime { static int MAXSIZE = 46340; bool[] prime; int[] prime_table; int prime_table_len; public Prime() { prime_table_len = 0; prime = new bool[MAXSIZE + 1]; prime_table = new int[MAXSIZE]; initBoolArray(prime); for (int i = 3; i <= MAXSIZE; i += 2) if (prime[i]) { for (int j = i + i; j <= MAXSIZE; j += i) prime[j] = false; prime_table[prime_table_len++] = i; } } public bool isPrime(int n) { if (n == 2) return true; if (n % 2 == 0) return false; if (n <= MAXSIZE) return prime[n]; for (int i = 0; i != prime_table_len && prime_table[i] * prime_table[i] <= n; ++i) if (n % prime_table[i] == 0) return false; return true; } private void initBoolArray(bool[] value) { int len = value.Length; for (int i = 0; i < len; i ++ ) value[i] = true; } }回首頁
學習程式設計過程中總會碰到疑難雜症,而這些疑難雜症又不是一時能解決,不論是以往或是從未遇過的,都可將這些在程式設計上所碰到問題的解決方法筆記下來,或許解決了就算了,但等到下次有相同問題時,可將這程式設計筆記再拿來參考,就不枉做筆記了。
2011年6月12日 星期日
演算法 - 判斷是否為質數
利用以下 C# 程式碼中的 isPrime(int n) 可以找出 1 ~ 2147483647 之間的質數:
標籤:
演算法筆記
訂閱:
張貼留言
(
Atom
)
沒有留言 :
張貼留言