👤

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;
}


Răspuns :

#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;

}

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...

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari