Informatică, întrebare adresată de mierlaaurie, 9 ani în urmă

Cerința
Anul 2017 tocmai s-a încheiat, iar nostalgicii suferă în tăcere deoarece acesta era număr prim. Dorel, un personaj întreprinzător, s-a gândit să afle pentru un număr natural n dat, care este cel mai mare divizor prim al acestuia.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran cel mai mare divizor prim al lui n.

Restricții și precizări
1 ≤ n ≤ 10la puterea 14
La indicatii imi spune acest lucru:
Se află divizorii lui n şi se verifică dacă sunt numere prime.
insa eu nu stiu cum sa verific daca un numar este prim.

Răspunsuri la întrebare

Răspuns de boiustef
0

#include <iostream>

using namespace std;

bool prim(unsigned long long m)

{

   if (m==0 || m==1) return false;

   if (m==2) return true;

   if (m>2)

   {

       if (m%2==0) return false;

       else

       {

           for (int i=3; i*i<=m; ++i)

               if (m%i==0) return false;

       }

       return true;

   }

}

int main()

{

   int n, divmax;

   cin >> n;

   if (prim(n)) cout << n;

   else

   {

        int d, divmax=1;

        for (d=2; d*d<=n; ++d)

            if (n%d==0)

               {

                  if  (prim(d) && d>divmax) divmax=d;

                  if  (prim(n/d) && (n/d)>divmax) divmax=n/d;

               }

      cout << divmax;

   }

   return 0;

}


mierlaaurie: fara for si fara true/fals nu se poate?
Alte întrebări interesante