Biletul nr. 10 pentru atestat informatica la programare 2015
Mai jos este prezentat codul sursa al aplicatiei in C++, cod care determina cel mai apropiat numar prim fata de un numar citit de la tastatura, rezultatul va fi scris intr-un fisier.
Enuntul problemei:
10. Fişierul date.in conţine pe unica sa linie un număr natural n (n ≤ 1000000000). Să se determine cel mai apropiat număr prim faţă de n. Programul va conţine cel puţin un subprogram, iar rezultatul obţinut va fi scris în fişierul date.out. Dacă sunt două numere prime egal departate de n, se poate afişa oricare dintre ele.
Rezolvarea problemei
#include<iostream.h>
#include<math.h>
#include<fstream.h>
int prim(int x,int d=2)
{
if(d>sqrt(x))
return 1;
else
if(x%d==0)
return 0;
else
return prim(x,d+1);
}
int nr(int n)
{
int a=n, b=n;
while(!prim(a))
a--;
while(!prim(b))
b++;
if(n-a<=b-n)
return a;
else
return b;
}
fstream fin("date.in",ios::in), fout("date1.out",ios::out);
int main()
{
int n,x;
fin>>n; x=nr(n);
fout<<x;
fin.close();
fout.close();
system("pause");
}
Scris de