C++
Cerinţa
Scrieţi definiția completă a unui subprogram C++ i_prim care primește prin singurul său parametru, n, un număr natural cu cel mult 9 cifre și returnează diferența minimă p2-p1 în care p1 şi p2 sunt numere prime și p1≤n≤p2.
Restricţii şi precizări
numele subprogramului va fi i_prim
n>2
Exemplu
Dacă n=28, i_prim(n)=6, deoarece p1=23 și p2=29.
Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Răspunsuri la întrebare
Răspuns de
16
int i_prim(int n)
{
int i, r=0, n1, n2;
bool prim = true;
for(i = 2; i*i <= n; i++)
if(n % i == 0)
{
prim = false;
break;
}
if (!prim)
{
n2=n;
n1=n;
while(true)
{
n1++;
prim = true;
for(i = 2; i*i <= n1; i++)
if(n1 % i == 0)
{
prim = false;
break;
}
if (prim) break;
}
while(true)
{
n2--;
prim = true;
for(i = 2; i*i <= n2; i++)
if(n2 % i == 0)
{
prim = false;
break;
}
if (prim) break;
}
r = n1 - n2;
}
return r;
}
{
int i, r=0, n1, n2;
bool prim = true;
for(i = 2; i*i <= n; i++)
if(n % i == 0)
{
prim = false;
break;
}
if (!prim)
{
n2=n;
n1=n;
while(true)
{
n1++;
prim = true;
for(i = 2; i*i <= n1; i++)
if(n1 % i == 0)
{
prim = false;
break;
}
if (prim) break;
}
while(true)
{
n2--;
prim = true;
for(i = 2; i*i <= n2; i++)
if(n2 % i == 0)
{
prim = false;
break;
}
if (prim) break;
}
r = n1 - n2;
}
return r;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Informatică,
9 ani în urmă
Biologie,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă