POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素數判定+快速模冪】
問題簡述:參見上述連結。
問題分析:
這個問題是驗證偽素數問題。p是偽素數的條件是,p不是素數並且滿足ap=a(modp)。
偽素數是數論中與費爾馬小定理有關的一個重要概念。
程式說明:
函式isprime()不是一個真正意義上的素數判斷函式,只進行奇數判定,對於本題條件是沒有問題的。
函式powermod()是模冪計算函式。
AC的C++語言程式如下:
/* POJ3641 UVA11287 HDU1905 Pseudoprime numbers */ #include <iostream> #include <cmath> using namespace std; typedef unsigned long long ULL; // 試除法判斷一個數是否為素數 bool isprime(ULL n) { ULL end2, i; end2 = sqrt(n); for(i=3; i<=end2; i+=2) { if(n % i == 0) break; } return i > end2; } // 模冪計算 ULL powermod(ULL a, ULL n, ULL m) { ULL res = 1LL; while(n) { if(n & 1LL) { // n % 2 == 1 res *= a; res %= m; } a *= a; a %= m; n >>= 1; } return res; } int main() { ULL p, a; while(cin >> p >> a && (p || a)) { if(!isprime(p) && powermod(a, p, p) == a % p) cout << "yes" << endl; else cout << "no" << endl; } return 0; }
相關推薦
POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素數判定+快速模冪】
問題簡述:參見上述連結。 問題分析: 這個問題是驗證偽素數問題。p是偽素數的條件是,p不是素數並且滿足ap=a(modp)。 偽素數是數論中與費爾馬小定理有關的一個重要概念。 程式說明: 函式isprime()不是一個真正意義上的素數判斷函式,只進行奇數判定,對於本題條件
UVa10006 Carmichael Numbers【素數判定+快速模冪】
問題簡述:參見上述連結。 問題分析: 這是一個卡爾邁勒數判定問題,只要讀懂題意就簡單了。 卡爾邁勒數是數論中的一個重要概念。 程式說明: 函式isprime()不是一個真正意義上的素數判斷函式,只進行奇數判定,對於本題條件是沒有問題的。 函式powermod()是模冪計算
POJ1995 ZOJ2150 Raising Modulo Numbers【快速模冪】
Time Limit:1000MS Memory Limit:30000K Total Submissions:8010 Accepted:4875 Description People are different. Some secretly read ma
HDU1097 A hard puzzle【快速模冪】
A hard puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 52171 Accepted Submission(s): 19072 P
UVALive3399 UVA1210 POJ2739 Sum of Consecutive Prime Numbers【素數篩選+尺取法】
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25286 Accepted: 13793 Description Some positive intege
leetcode2 Add Two Numbers【連結串列模擬大數加法】
給定的連結串列是倒序的 MDZZ………………我還自己寫了半天反轉連結串列,才發現不對…………然後後來又是各種報錯,發現自己寫麻煩了,總共先定義兩個指標,一個作為頭,一個往後走就可以了…………AC1.0/** * Definition for singly-linked li
ACM-ICPC 2018 焦作賽區網路預賽 G. Give Candies 【快速模冪+費馬小定理】
1000ms 65536K There are N children in kindergarten. Miss Li bought them N candies. To make the process more interesting, Miss Li comes
2018 Multi-University Training Contest 7 1010 Sequence【整數分塊+矩陣冪】
題意:在擴充套件斐波納挈的基礎上加了一個變數P/nP/n。求第nn項的取值。 分析:考慮將每一種P/nP/n進行矩陣快速冪,也就是進行了整數分塊處理。對於每一個整數塊可以使用矩陣快速冪,然後維護A,BA,B用作下一次的矩陣快速冪使用。 整數分塊: 通過
【numpy官方快速入門教程】
寫在前面: 快速入門教程 預備知識 基礎部分 生成陣列 列印陣列 基本操作 寫在前面: 1、本文是NumPy官方網站(http://www.numpy.org/)的快速入門教程(Quickstart tutorial)的完整翻譯版本,原文
HDU1163 Eddy's digital Roots【快速模冪+九餘數定理+水題】
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 84156 Accepted Submission(s
3641(Pseudoprime numbers )偽素數判定(快速冪+素數判定)
題目大意 給定兩個數p和a,判斷p是否是一個偽素數。 兩個條件: ①p不是一個素數; ②a^p≡a(mod p)。
18.2.14 【水】codevs1430 素數判定
兩個 技術分享 display for 素數 onclick play mes ber 題目描述 Description 質數又稱素數。指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。 素數在數論中有著很重要的地位。比1大但不是素數的數
HDU3988 大整數質因數分解【Miller_Rabin 進行素數判定+Pollard_rho對整數進行因數分解】
iSea is tired of writing the story of Harry Potter, so, lucky you, solving the following problem is enough. Input The first line contains
HDU2012 素數判定【入門】
素數判定 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 156040 Accepted Submiss
【九度】題目1047:素數判定
:1 秒記憶體限制:32 兆特殊判題:否提交:6455解決:2938題目描述: 給定一個數n,要求判斷其是否為素數(0,1,負數都是非素數)。輸入: 測試資料有多組,每組輸入一個數n。輸出: 對於每組輸入,若是素數則輸出yes,否則輸入no。樣例輸入: 13樣例輸出: ye
【杭電-oj】-2012-素數判定
Problem Description 對於表示式n^2+n+41,當n在(x,y)範圍內取整數值時(包括x,y)(-39<=x<y<=50),判定該表示式的值是否都為素數。
【C語言】素數判定
說明 int 素數 dde 直接 %d 等於 rime include 題目:######素數判定。###### 編寫函數,參數是一個正整數n,如果它是素數,返回1,否則返回0。 分析 質數概念: 質數:除了1之外,只能被它本身整除的正數稱為質數 如果這個數能被
【leetcode 字符串處理】Compare Version Numbers
author 大小 pac tex onos article padding pop 題意 【leetcode 字符串處理】Compare Version Numbers @author:wepon @blog:http://blog.csdn.net/u0121
UVa 11582 Colossal Fibonacci Numbers! 【大數冪取模】
term sign fontsize name fib sep iss style watermark 題目鏈接:Uva 11582 [vjudge] 題意 輸入兩個非負整數a、b和正整數n(0<=a,b<=2^64,1<=n<=1000
HDU - 2012 素數判定 解題
acc bmi mission 給定 tro span 整數 ane amp 素數判定 Time Limit: 2000/1000 MS (Java/Others)