La conjetura de Goldbach Codeforce 735D

Impuestos
timeLimit: 2000ms MemoryLimit: 256 MB
de 64 bits número entero formato IO:% I64d

Descripción del problema
El Sr. Funt ahora vive en un país con una legislación fiscal muy específicas. El ingreso total de mr. Funt durante este año es igual a n (n ≥ 2) Burles y la cantidad de impuestos que tiene que pagar se calcula como el máximo divisor de n (n es igual a, por supuesto). Por ejemplo, si n = 6 entonces Funt tiene que pagar 3 Burles, mientras que para n = 25 que tiene que pagar 5 y si n = 2 se paga sólo 1 burle.

Como mr. Funt es una persona muy oportunista que quiere engañar un poco. En particular, quiere dividir el n inicial en varias partes n1 + n2 + ... + nk = n (en este caso k es arbitraria, incluso k = 1 se permite) y pagar los impuestos para cada parte por separado. Él no puede hacer que una parte igual a 1, ya que lo quiera revelar. Por lo tanto, la condición de Ni ≥ 2 debe mantener para todo i de 1 a k.

maravillas Ostap Bender, ¿cuántos dinero Funt tiene que pagar (es decir, mínimo) si así lo desea y mejor manera de dividir en partes n.

Input
La primera línea de la entrada contiene un solo número entero n (2 ≤ n ≤ 2 · 109) - el total de ingresos año de mr. Funt.

Salida
Imprimir un entero - posible número mínimo de Burles que mr. Funt tiene que pagar como impuesto.

SampleInput 1
4
SampleOutput 1
2
SampleInput 2
27
SampleOutput 2
3

Significado de las preguntas: para darle un número n, n se puede dividir en k partes, cada parte del impuesto es el más grande divisible número, y le preguntó hasta qué punto el impuesto mínimo es
el pensamiento: es claro que la mejor descomponerse en números primos de modo que cada parte del costo el mínimo es 1, por lo que esta solución es el menos y más excelente. La pregunta ahora es cómo romper un número primo, y luego por la postura que hay algo que se llama conjetura de Goldbach.
Conjetura de Goldbach: Cualquier número mayor aún que 2 puede escribirse como la suma de dos números primos. Conjetura fuerte de Goldbach cada una no menos de 2 son número primo par-impar de dos.
débil conjetura de Goldbach son cada uno un número impar de no menos de tres primo impar y 2.

Por lo tanto, es una idea clara Liao, n 1 determina en primer lugar si él mismo es un número primo si un salidas directas 1 si está incluso se puede obtener n de acuerdo con la intensidad que debe adivinar la suma de dos números primos y la salida es un número primo impar 2.3 Si es un número impar de tres puede ser obtenida de la suma de la producción y calidad 3 o puede ser un número n primer restando un Goldbach débil conjetura 2 en función de si se trata de un número primo se determina restando la salida si 2 (2n-2, y ambas es un número primo), entonces se indica que no es un número par entonces la salida 3 (2 como un número primo, n es un número par, pero no es un número primo)

Ofrezco los siguientes códigos para forzar baja

#include <iostream>

using namespace std;

bool isprime(int n)
{
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}

int main()
{
    int n;

    cin >> n;

    if(n==1||isprime(n))
        cout << "1" << endl;
    else if(n%2==0)
        cout << "2" << endl;
    else
    {
        if(isprime(n-2))
            cout << "2" << endl;
        else
            cout << "3" << endl;
    }

    return 0;
}
Publicado 54 artículos originales · ganado elogios 0 · Vistas 1221

Supongo que te gusta

Origin blog.csdn.net/weixin_44144278/article/details/99779645
Recomendado
Clasificación