Se citeşte de la tastatură un şir de n numere. Realizaţi un program care verifică dacă numărul format din cifrele unităţilor acestora este un număr prim. Exemplu: Pentru n=4 şi numerele 237 23 453 11 se va afişa: Numărul 7331 este prim.
CE AM GRESIT ??
#include
using namespace std;
int main()
{
int n,i,nr,u,nou,is_prime=1,d;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>nr;
do
{
u=nr%10;
nou=nou*10+u;
nr/=10;
}while(nr);
is_prime=1;
if(nou<2 || nou>2 && nou%2==0)
is_prime=0;
else
for(d=3;d*d<=nou;d+=2)
if(nou%d==0)
{
is_prime=0;
break;
}
if(is_prime=1)
cout<<"Numarul "<
else
cout<<"Numarul nu este prim";
}
return 0;
}
nou=u*10+nou;
tr. să ai o variabilă
{
u=nr%10;
nou=nou*10+u;
nr/=10;
}while(nr);
do
{
u=nr%10;
nou=u*p+nou;
nr/=10;
p=p*10;
}while(nr);
Răspunsuri la întrebare
#include <iostream>
using namespace std;
bool prim(register unsigned long long int x){
if (x < 2) return false;
if (x < 4) return true;
register unsigned int v = x % 6;
if(v != 1 && v != 5)return false;
for(v = 3; v * v <= x; v+=2){
if(x % v == 0)return false;
}
return true;
}
int main(){
int n,x;
unsigned long long nou = 0;
cin >> n;
while(n-- > 0){
cin >> x;
nou = nou * 10 + (x % 10);
}
if(prim(nou))cout << "Numarul este prim";
else cout << "Numarul nu este prim";
}
Fara functii:
#include <iostream>
using namespace std;
int main(){
int n,x;
unsigned long long nou = 0;
cin >> n;
while(n-- > 0){
cin >> x;
nou = nou * 10 + (x % 10);
}
bool prim = (nou > 1);
if(prim){
prim = (nou < 4) || (nou % 6 == 1 || nou % 6 == 5);
if(prim){
for(int i = 3; i * i <= nou && prim; i+=2)
if(nou%i == 0) prim = false;
}
}
if(prim)cout << "Numarul este prim";
else cout << "Numarul nu este prim";
}
La rezolvarea ta:
#include <iostream>
using namespace std;
int main()
{
int n,i,nr,u,nou=0,is_prime=1,d;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>nr;
u=nr%10;
nou=nou*10+u;
}
is_prime=1;
if(nou<2 || (nou>2 && nou%2==0))
is_prime=0;
else
for(d=3;d*d<=nou;d+=2)
if(nou%d==0)
{
is_prime=0;
break;
}
if(is_prime=1)
cout<<"Numarul este prim";
else
cout<<"Numarul nu este prim";
return 0;
}
Al 2-lea numar-> nou = c1*10 + c2
Al 3-lea numar -> nou = c1*100+c2*10+c3 ....
La fiecare numar nou ultima cifra se adauga la sfarsit
using namespace std;
int main()
{
int n,i,nr,u,nou=0,is_prime=1,d,p=1;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>nr;
do
{
u=nr%10;
nou=u*p+nou;
nr/=10;
p=p*10;
}while(nr);
is_prime=1;
if(nou<2 || nou>2 && nou%2==0)
is_prime=0;
else
for(d=3;d*d<=nou;d+=2)
if(nou%d==0)
{
is_prime=0;
break;
}
if(is_prime=1)
cout<<"Numarul "< else
cout<<"Numarul nu este prim";
}
return 0;
}
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n,i,nr,u,nou=0,is_prime=1,d;
cin >> n;
for(i=1; i <= n; i++)
{
cin>>nr;
u=nr%10;
nou=nou*10+u;
}
is_prime=1;
if(nou<2 || (nou>2 && nou%2==0))
is_prime=0;
else
for(d=3; d*d <= nou; d+=2)
if(nou%d==0)
{
is_prime=0;
break;
}
cout << nou << " ";
if (is_prime==1)
cout << "prim ";
else
cout << "nu este prim";
return 0;
}
Explicație:
am redactat programul tău... am afişat şi numărul creat. nu trebuia while acolo doar se ia numai ultima cifră de la fiecare număr introdus...