Treść zadania to:
Liczba Goldbacha jest to taka liczba naturalna, którą można zapisać przy pomocy
dwóch liczb pierwszych np. 8, bo 8=3+5.
Napisz program, który wypisze wszystkie liczby Goldbacha (najlepiej z rozkładem np.
102=31+71) nie większe niż n (podawane przez użytkownika).
Podpowiedzi:
• wykorzystaj funkcję „czy_pierwsza” omawianą na poprzedniej lekcji.
• jeżeli któraś liczba Goldbacha ma kilka różnych sposobów rozkładu, to wypisz
tylko jeden
Mój problem polega na tym, że stworzyłem program, który potrafi znaleźć te liczby ale nie jestem w stanie wymyślić jak zaradzić drugiej kropce czyli żeby te same sumy działań różnych liczb pierwszych wyświetlały się jednokrotnie nie wiele razy. Siedzę nad tym już ponad dwie godziny będę wdzięczny za wszelką pomoc.
Tak wygląda kod:
#include <iostream>
#include <math.h>
using namespace std;
bool pierwsza(int n);
bool pierwsza1(int n);
//=====================================================
int main()
{
int n,suma=0;
cin>>n;
for(int i=2; i<n; i++)
{
if(pierwsza(i)==1)
{
for(int j=2; j<n; j++)
{
if(pierwsza1(j)==1)
{
if(i+j<=n)
{
suma=i+j;
cout<<i<<"+"<<j<<"="<<suma;
cout<<endl;
}
}
}
}
}
return 0;
}
//=====================================================
bool pierwsza(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
//=====================================================
bool pierwsza1(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
//=====================================================