zoukankan      html  css  js  c++  java
  • POJ 3641 Pseudoprime numbers (数论+快速幂)

    题目链接:POJ 3641

    Description

    Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but not very many) non-prime values of p, known as base-a pseudoprimes, have this property for some a. (And some, known as Carmichael Numbers, are base-a pseudoprimes for all a.)

    Given 2 < p ≤ 1000000000 and 1 < a < p, determine whether or not p is a base-a pseudoprime.

    Input

    Input contains several test cases followed by a line containing "0 0". Each test case consists of a line containing p and a.

    Output

    For each test case, output "yes" if p is a base-a pseudoprime; otherwise output "no".

    Sample input

    3 2
    10 3
    341 2
    341 3
    1105 2
    1105 3
    0 0
    

    Sample output

    no
    no
    yes
    no
    yes
    yes
    

    Solution

    题意

    给定 (p)(a),判断 (p) 是否为合数且满足 (a^pequiv a(mod p))

    题解

    水题 快速幂 + 素数判断

    Code

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    typedef long long ll;
    
    bool is_prime(ll a) {
        for(ll i = 2; i <= a / i; ++i) {
            if(a % i == 0) return 0;
        }
        return 1;
    }
    
    ll qmod(ll a, ll b, ll p) {
        if(!b) return 1 % p;
        ll ans = 1;
        while(b) {
            if(b & 1) ans = (ans * a) % p;
            a = (a * a) % p;
            b >>= 1;
        }
        return ans;
    }
    
    int main() {
        ll a, p;
        while(~scanf("%lld%lld", &p, &a) && a + p) {
            if(is_prime(p) == 0 && qmod(a, p, p) == a) {
                printf("yes
    ");
            } else {
                printf("no
    ");
            }
        }
        return 0;
    }
    
  • 相关阅读:
    常用命令
    linux是文件里的内容整齐
    centos 7新机使用前操作
    Symmetric Tree @leetcode
    Binary Tree Inorder Traversal @leetcode
    [转]快速排序
    Remove Duplicates from Sorted Array @leetcode
    Remove Element @leetcode
    随笔1
    Unique Binary Search Trees @leetcode
  • 原文地址:https://www.cnblogs.com/wulitaotao/p/11312042.html
Copyright © 2011-2022 走看看