Números pseudoprime (preguntas rápidas sobre plantillas)

El teorema de Fermat establece que para cualquier número primo py para cualquier entero a> 1, ap = a (mod p). Es decir, si elevamos a la p-ésima potencia y dividimos por p, el resto es a. Algunos (pero no muchos) valores no primos de p, conocidos como pseudoprimos base-a, tienen esta propiedad para algunos a. (Y algunos, conocidos como números de Carmichael, son pseudoprimes en base a para todos los a.)

Dado 2 <p ≤ 1000000000 y 1 <a <p, determine si p es una base-a pseudoprime o no.

Entrada

La entrada contiene varios casos de prueba seguidos de una línea que contiene "0 0". Cada caso de prueba consta de una línea que contiene py a.

Salida

Para cada caso de prueba, la salida "sí" si p es un pseudoprime base-a; de lo contrario, envíe "no".

Entrada de muestra

3 2
10
3341
2341 3
1105 2
1105 3
0 0

Salida de muestra

no
no
si
no
si
si

Descripción del Título:

Ingrese un par de py a, si p es un número primo, dé salida no; si p no es un número primo, juzgue si el resto de a ^ p es igual a a.

Ideas de resolución de problemas:

Conjunto de plantillas de energía rápida AC directo

Código:

#include<bits/stdc++.h>
long long int qpow(long long int a,long long int b)//快速幂模板
{
    
    
    long long int ans = 1,t=b;
    while(b){
    
    
        if(b&1)        //如果n的当前末位为1
            ans=(ans*a)%t;  //ans乘上当前的a
        a=(a*a)%t;        //a自乘
        b >>= 1;       //n往右移一位
    }
    return ans%t;
}
long long int prime(long long int n)
{
    
    
    long long int i,k;
    if(n== 0) 
	return 0;
    k=sqrt(n);
    for(i=2;i<=k;i++)
    {
    
    
        if(n%i==0) 
		return 0;
    }
    return 1;
}
int main()
{
    
    

    long long int p,a;
    while(scanf("%lld %lld",&p,&a) &&p+a)
    {
    
    
        if(prime(p))
		printf("no\n");
        else
        {
    
    
            if(qpow(a,p) == a)
			printf("yes\n");
            else
            printf("no\n");
        }

    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_46703995/article/details/112477132
Recomendado
Clasificación