Informatică, întrebare adresată de mirunaelena263, 8 ani în urmă

..........................

Anexe:

Răspunsuri la întrebare

Răspuns de StefanGroparu21
1

Răspuns:

#include<bits/stdc++.h>

using namespace std;

int main()

{

int n,i=2,e;

cin>>n;

while(n>1)

{

   e=0;

   while(n%i==0)

   {

       e++;

       n/=i;

   }

   if(e)

       if(i<10)

           for(int j=1;j<=e;j++)

       cout<<i<<" ";

   i++;

   if(n>1 and i*i>n)

       i=n;

}

return 0;

}

Explicație:

Daca nu vrei sa iti afiseze toti factorii primi(si cei care se repeta) doar sterge for-ul ala de la 1 la e si ii va afisa fara sa se repete

De exemplu, pt 32 cu for-ul iti va afisa 2 2 2 2 iar fara for doar 2

Sper ca te-am ajutat!!


StefanGroparu21: pai daca i*i il depășește pe n (si n nu e 1) atunci n e prim
StefanGroparu21: si trecem direct la el ca factor
StefanGroparu21: altfel, pt un nr prim nu ti-ar fi afisat nimic
mirunaelena263: Ahaaaaaaa, acum am înțeles mersi mult, mult, mult
mirunaelena263: Dacă trebuie sa afișam cel mai mare factor sau factorul prim care apare de cele mai multe oriam putea omite părea asta nu
mirunaelena263: Partea *
StefanGroparu21: da, daca vorbim despre divizorii proprii
mirunaelena263: Adică apare întotdeauna
StefanGroparu21: partea aia o pui dor daca vrei sa-ti ia in considerare numarul(daca e prim) ca divizor
mirunaelena263: Mulțumesc!!!
Alte întrebări interesante