素性測試演算法
| 判斷素數
//判斷是否為素數
bool isprime(int k)
return
true;
}
| 素數表的生成
一、列舉篩選法:
const
int maxn = 101; //表長
int prime[maxn], pnum = 0; //素數表,素數個數
bool p[maxn] = ; //p[i] == true 表示i是素數
void find_prime()
}}
二、eratosthenes & 尤拉 篩選法
參考部落格
#include
#include
#include
#include
#include
using
namespace
std;
//篩選素數,範圍(0, n)
/*1、erotosthenes篩選法:不斷刪除當前素數的倍數(即合數)
缺陷:部分數會被篩到多次,複雜度o(nlogn)
2、尤拉篩選法:空間換時間
開闢陣列,prime記錄已篩選出的素數;
還是從2開始遍歷(遇到vis[i] == 0,則為素數)
把 i乘以已儲存的所有素數prime[j]所得到的數 標記為合數,即vis[i * prime[j]] = 1
複雜度o(n)
*/#define max 10000
void sieveofe(int p, int n)
}printf("\n");
}void prime(int vis, int n)
for (int j = 0; j < cnt && i * prime[j] < n; j++)
}printf("\n");
}int main()
printf("%d\n", count);
}system("pause");
return
0;}
素數相關演算法(二)
素數演算法 二 上次討論了簡單的素數判定的演算法,不過這個演算法對於位數較大 一般小於108 的素數判定就顯得相當力不從心了。比如在素數目前最廣泛的應用領域 公共金鑰體系中,一般選擇的素數都是相當大的 通常在100位以上 如果採用上次的試除法來判定,那麼可能要窮盡你一生的時間都還不夠。所以在一般的應...
小演算法整理 質因子分解
質因子分解 練習題 pat.a1059 儲存結構 質因數 結構體 struct factor fac 10 int範圍內,10位夠用了考慮到2x3x5x7x11x13x17x19x23x29就已經超過了int範圍,因此對乙個int範圍內的數來說,fac陣列的大小只需開到10就可以了!結論 求解思路 ...
素數判斷演算法
bool isprime int n bool isprime int n int p max void prime int n return n odd 最後把主體和 剩下的 乘起來作為結果 演算法思路 對於n,從素數表中取出任意的素數對其進行費馬測試,如果取了很多個素數,n仍未測試失敗,則認為 ...