fbpx

Problema #1345 – kprim – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Să se scrie un program care citește un număr natural k și afișează cel mai mic număr natural n mai mare decât 1, care nu este divizibil cu primele k numere prime și nu este prim.

Fișierul de intrare kprim.in conține pe prima linie numărul k.

Date de ieșire

Fișierul de ieșire kprim.out va conține pe prima linie numărul n, reprezentând cel mai mic număr natural n,care nu este divizibil cu primele k numere prime și nu este prim.

Restricții și precizări

  • 1 ≤ k ≤ 10000

Exemplu

kprim.in

3

kprim.out

49

Explicație

Primele 3 numere prime sunt 2, 3, 5.

Numerele care nu sunt divizibile cu 2, 3 sau 5 sunt : 7, 11, 13, 17, 19, 23, 31, 37, 41, 47, 49, …

49 este cel mai mic număr care nu este prim.

#include <bits/stdc++.h>
using namespace std;
ifstream fin("kprim.in");
ofstream fout("kprim.out");
unsigned long long prim (unsigned long long n)
{
    if (n==0 || n==1) return 0;
    if(n==2) return 1;
    if(n%2==0) return 0;
    for (unsigned int i=3;i*i<=n;i += 2)
        if(n%i==0) return 0;
    return 1;
}
int main()
{
     unsigned long long n,x,r;
     fin>>n;
     if(n==1) fout<<9;
     else
     {x=3;
     while(n>0)
     {
        if(prim(x))
        {
            r=x;
            n--;
        }
        x++;
     }
     unsigned long long p;
     p=r*r;
     fout<<p;
     }
    return 0;
}
Comentarii

S-ar putea sa iti placa