素數曬法 素數Rabin測試 快速冪取模

2021-07-24 14:24:01 字數 830 閱讀 3161

素數篩法,產生num以內的素數表

public static int  makeprimes(int primes, int num)

}if(flag) primes[cnt++] = i;

} return cnt;

}

根據素數表快速判斷是否素數,只要打表到sqrt(n),就能快速判斷n以內的數是否是素數

快速冪取模

public static long pow_mod(long a,long i,long n)

素數測試

由於出現了long*long型的中間變數,所以只能測試int範圍以內,需要更大範圍需使用bigdecimal/biginteger

public static boolean isprime(long n)

; //測試集合

for(int i=0;i>1;

long t =pow_mod(a, d, n);

while((d!=n-1)&&(t!=1)&&(t!=n-1))

return (t==n-1||(d&1)==1); }

public static long pow_mod(long a,long i,long n)

素數快速求法 篩法求素數

在做題的過程中,我們會遇到一些需要求素數的要求,如果對於資料範圍很小的資料,我們有最簡單但是最耗時間的雙for迴圈巢狀法。下面舉個例子。question get the primes from 1 to 100 and print them.素數求法 基礎for迴圈法 include include...

快速篩法求素數

stack queue的部落格 求素數是程式設計比賽中經常遇到的問題,最基本的方法是通過素數的定義直接判斷,只能被1和它本身整除的數就是素數了。這種方法適合判斷單個數是否為素數,當要求乙個範圍內素數而這個範圍又比較大時,這種方法就不太使用了,甚至程式要執行幾分鐘才能算出結果。篩法的思想是去除要求範圍...

快速篩法求素數

篩法的思想是去除要求範圍內所有的合數,剩下的就是素數了,而任何合數都可以表示為素數的乘積,因此如果已知乙個數為素數,則它的倍數都為合數。1 include2 using namespace std 3 define max 100000 4long long su max cnt 5bool isp...