Se consideră subprogramul pr, care primeşte prin intermediul parametrului a un număr
natural nenul cu cel mult 9 cifre şi returnează 1 dacă numărul este prim şi 0 în caz contrar.
a) Scrieţi numai antetul subprogramului pr. (4p.)
b) Considerăm un număr natural nenul n>99 cu cel mult 9 cifre. Din n se obţine un şir de
valori prin eliminarea succesivă a ultimei cifre, apoi a ultimelor două cifre, apoi a ultimelor
trei cifre etc., până se obţine un număr de două cifre, ca în exemplu.
Să se realizeze un program C/C++ care citeşte de la tastatură numărul n şi care, folosind
apeluri utile ale subprogramul pr, afişează pe ecran, separate prin câte un spaţiu, doar
valorile prime din şirul obţinut din n conform descrierii de mai sus.
Exemplu: pentru n=193124 se obţine şirul de valori 19312,1931, 193, 19 din care se vor
afişa pe ecran doar valorile 1931 193 19 (nu neapărat în această ordine).
serban1337:
Btw, practic ce am facut eu acolo (presupun ca stii ce ii recursivitate), practic am luat numarul, l am transformat in string pentru optimizare dupaceea am luat prima cifra din string si anume t[0], dupaceea am folosit stoul pentru a transforma cifra/cifrele(in cazul acesta cifra) intr-un integer.
Răspunsuri la întrebare
Răspuns de
2
Răspuns:
Raspuns cu recursivitate a.k.a. mai optimizat
Explicație:
#include <iostream>
#include <cmath>
using namespace std;
int prim(int n)
{
if(n<2)
return 0;
if(n==2)
return 1;
if(n%2==0)
return 0;
int d;
for(d=2;d*d<=n;d=d+2)
if(n%d==0)
return 0;
return 1;
}
void recursiv(int n,int y)
{
int lafel=y;
string t,x;
t=to_string(n);
x=t;
if(stoul(x)>=1&&prim(stoul(x))==1&&lafel!=n)
cout<<x<<' ';
if(n>0)
recursiv(n/10,1);
}
int main()
{
int n,y;
cin>>n;
y=n;
recursiv(n,y);
return 0;
}
Alte întrebări interesante
Engleza,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Chimie,
9 ani în urmă