1. 程式人生 > >POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素數判定+快速模冪】

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)