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



Un număr natural se numește aproape prim dacă poate fi scris ca produs de două numere naturale prime distincte.

Cerinţa
Se citește un număr natural și apoi n numere naturale. Să se determine câte dintre ele sunt aproape prime
Pe pbinfo imi da 0 puncte pe rezolvarea asta si nu stiu unde am gresit



#include
using namespace std;
int n,i,d,x,k=2,C=0;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
for(d=2;d<=x/2;d++)
{
if(x%d==0)
k++;
}
if(k==2)
C++;
}
cout< return 0;
}


boiustef: se vede ca codul postat nu e complet... si tr sa verifici daca num introdus x este un produs a 2 num prime, deci el nu e prim dar il controlezi la primalitate
boiustef: cand postezi problema ori scrii tot enuntul sa se vada toate restrictiile, ori arati sursa - nr problemei de pe pbinfo ca acela care iti da raspuns sa poate verifica acolo testul
boiustef: verificarea la primalitate nu e una din efective
crisscryss2008: #380 aprim1

Răspunsuri la întrebare

Răspuns de boiustef
0

#include <iostream>

using namespace std;

bool prim(int 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;

   }

}

bool apr_prim(int m)

{

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

   {

       if (m%i==0)

       {

           if (prim(i) && prim(m/i)) return true;

       }

   }

    return false;

}

int main()

{

  int n, num, i, c=0;

  cin >> n;

  for (i=1; i<=n; ++i)

  {

      cin >> num;

      if (apr_prim(num)) ++c;

  }

  cout << c;

   return 0;

}




Alte întrebări interesante