liczby pólpierwsze

0

liczbami pólpierwszymi nazywamy liczby które są iloczynem dwóch liczb pierwszych np 95=5*19

Proszę o znalezienie błędu
bool czy_pierwsza( int n)
{
if(n<2) return false;
for (int i=2; i<=n;i++)
if (n%i==0) return false;
return true;
}
int main ()
{
int liczba;

cout<<"podaj liczbe";
cin>>liczba;
for ( int i =1;i<=liczba/2;i++)
                               if (liczba%i==0 && czy_pierwsza(i))
 for ( int j =1;j<=liczba/2;j++)
                                if (liczba%j==0 && czy_pierwsza(j))
    if(i*j==liczba)
    cout<<"liczba"<<liczba<<"jest polpierwsza"<<endl;
0

blad jest taki ze

  1. zle tagi
  2. kod sie nie kompiluje
  3. nie sprawdzales google
0

Cały ten kod jest do zaorania szczerze mówiąc. Najpierw masz najgorszy możliwy sposób sprawdzania pierwszości liczb a potem masz bezsensowne szukanie tych liczb półpierwszych. Jakie byłoby sensowne?

  1. Dla każdej liczby pierwszej p w zakresie 0..sqrt(liczba):
  2. Jeśli liczba % p == 0 i jednocześnie liczba/p jest liczbą pierwszą to liczba jest półpierwsza.
0
  1. Popraw wcięcia.
  2. Pokoloruj kod <code><code class="cpp"></code></code>
for (int i=2; i<=n;i++)
     if (n%i==0) return false;

Gdy i == n warunek ifa zawsze będzie spełniony, czyli wg tej funkcji żadna liczba nie jest pierwsza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1