1. 程式人生 > >費馬小定理判斷素數

費馬小定理判斷素數


// 根據費馬小定理判斷P是否為一個素數
#include <iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long ll;
ll p;
ll Pow(ll a,ll b)
{
    ll res=1;
    while(b)
    {
        if(b&1) res=a*res;
        b>>=1;
        a=a*a;
    }
    return res;
}
int main()
{
    std
::ios::sync_with_stdio(false); std::cin.tie(0); while(cin>>p) { int flag=0; ll a=2; if(p<2) { cout<<p<<"不是素數"<<endl; continue; } if(p==2) { cout<<p<<"是素數"<<endl; continue; } if(p%a==1) { if
(Pow(a,p-1)%p==1) { flag=1; } } if(flag==1) { cout<<p<<"是素數"<<endl; } else { cout<<p<<"不是素數"<<endl; } } return 0; }

相關推薦

定理判斷素數

// 根據費馬小定理判斷P是否為一個素數 #include <iostream> #include<stdio.h> #include<algorithm> using namespace std; typedef long

素數方法(二)—— 定理及MR素數判斷

註明:本文中的x^y表示x的y次方 一、費馬小定理 1.1 內容 若p為素數,a為正整數,且gcd(a,p)=1,則a^(p−1)≡1(mod p)。1.2 證明 因為p為素數,所以gcd(

定理 素性判斷 蒙哥利演算法

轉載於http://blog.csdn.net/arvonzhang/article/details/8564836 1.約定 x%y為x取模y,即x除以y所得的餘數,當x<y時,x%y=x,所有取模的運算對象都為整數。 x^y表示x的y次方。

C++實現定理素數測試

#include<iostream> #include<iomanip> #include<cstdlib> #include<ctime> #include<cmath> using namespace std

hdu4549矩陣快速冪+定理

次方 pla pragma nod 技術分享 gif 矩陣 end eof 轉移矩陣很容易求就是|0 1|,第一項是|0| |1 1| |1| 然後直接矩陣快速冪,要用到費馬小定理 :假如p

HDU 4704 Sum(隔板原理+組合數求和公式+定理+快速冪)

ace php 模板 erl char printf 證明 style ron 題目傳送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description Sample Input 2 Sam

SDOI 2010--古代豬文(Lucas算法&定理&中國剩余定理)

費馬小定理 答案 nbsp ont using main long long 資料 合數 發現幾乎每次數論題洛谷總是讓我TLE一個點。。。。 附圖: 最後那個點優化了很久終於過了。。。。 題意

【數學基礎】【歐拉定理模板】【定理

基礎 int 復雜度 amp pan -1 log 分治 質數 費馬小定理:當p是一個質數時,且a和p互質,有ap-1=1(mod p) (歐拉定理的一種特殊情況) 歐拉定理:如果a和n互質,那麽aφ(n)=1(mod n) 對於任意a,b,n就有 ab=

SPOJ DCEPC11B - Boring Factorials 定理

pri med www. while mat const res 取余 multi 題目鏈接:http://www.spoj.com/problems/DCEPC11B/ 題目大意:求N!對P取余的結果。P是素數,並且abs(N-P)<=1000。 解題思路:wiki

51Nod 1119 機器人走方格 V2 組合數學 定理

素數 實現 逆元 整數 要求 合數 init sin 排列組合 51Nod 1119 機器人走方格 V2 傳送門 高中的排列組合應該有講過類似的題,求路徑條數就是C(m+n-2,n-1) 想法很簡單,問題是怎麽實現……這裏要用到費馬小定理,用到逆元 費馬小定理:假如p是素數

HDU 5201 The Monkey King(組合數學)(隔板法+容斥定理+定理)

逆元 cst 大於 ont amp space pro http strong http://acm.hdu.edu.cn/showproblem.php?pid=5201題意:給你n個桃子要你分給m只猴子,猴子可以得0個桃子,問有多少種方法,但是有一個限制條件: 第一只猴

【bzoj5118】Fib數列2 定理+矩陣乘法

n-2 fin 描述 print std fine ont str CP 題目描述 Fib定義為Fib(0)=0,Fib(1)=1,對於n≥2,Fib(n)=Fib(n-1)+Fib(n-2) 現給出N,求Fib(2^n). 輸入 本題有多組數據。第一行一個整

定理

out urn long clas cout spa nbsp pre gpo 計算分數n/m對c取模 long long int c; long long int quick(long long int n,long long int m) { lon

hdu 3037 定理+逆元求組合數+Lucas定理

void log 打表 數學 mod turn ret iostream toc 組合數學推推推最後,推得要求C(n+m,m)%p 其中n,m小於10^9,p小於1^5 用Lucas定理求(Lucas定理求nm較大時的組合數) 因為p數據較小可以直接階乘打表求逆元

定理的證明

利用 就是 個數 .... code 先來 bsp 存在 相同 數論: 1.費馬小定理: mod:a mod p就是a除以p的余數 費馬小定理:a^(p-1)≡1(mod p) 前提:p為質數,且a,p互質 互質:a和p相同的因數為1.

牛客挑戰賽B隨機數 (定理+對大數的取模+組合數學出現次數為奇數的問題)

IT pre 運行 tps long 時間 DC 之間 typedef 鏈接:https://www.nowcoder.com/acm/contest/129/B來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言5242

定理與歐拉定理

img 由於 假設 因數 歐拉 參考 表示 height 計算 歐拉定理和費馬小定理有許多重要的應用,常見的我們可以用它來化簡計算 費馬小定理是歐拉定理的特例 一、費馬小定理            證明: 由(a,m) = 1,知m不是a的素因數;又因為m不是1、2、3..

定理及其應用

素數 mage 質數 style names .com col () 神奇 假如p是質數,且gcd(a,p)=1,那麽 a^(p-1)≡1(mod p) 也就是a^(p-1) %p=1 據說它是歐拉定理的一種特殊情況,也就是 比較神奇,據說很出名很出名很出名 先回顧一下乘

歐拉定理 / 定理證明

重新 nbsp data- data aid span hellip class ram 主要部分轉自百度百科:https://baike.baidu.com/item/歐拉定理 內容: 在數論中,歐拉定理,(也稱費馬-歐拉定理)是一個關於同余的性質。歐拉定理表明,若n

HDU - 1576(定理求逆元)

math src typedef pow ble inpu show font type 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 A/B Time Limit: 1000/1000 MS (Java/Othe