Witam,
mam do napisania program sprawdzający hipotezę goldbacha dla 20 liczb pierwszych.
Napisałem program który wypisuje 20 liczb pierwszych.
#include <stdio.h>
#include <stdlib.h>
int pierwsze (int n)
{
int i;
int p=0;
for (i=2; i <= sqrt (n); i++)
if (n % i == 0)
{
p=1;
break;
}
return p;
}
int main ()
{
int n, p, wynik=0;
do {
printf ("Wpisz liczbe naturalna, n>2, \n n= ");
scanf ("%d", &n);
} while (2<n<= 0);
while (wynik<20)
{
p = pierwsze (n);
if (p == 0)
{
printf("%d \n", n);
wynik++;
}
n++;
}
system ("pause");
return 0;
}
Teraz nie wiem czy dobrze zrozumiałem hipotezę goldbacha ale:
mam liczbę pierwsza powiedzmy jest to n=11 z w/w kodu
robię pętle for która sprawdza czy liczba mniejsza od n (czyli od 11) jest liczba pierwsza(przyjmujemy x), jeżeli jest to wtedy ja dodaje do n'a
warunki wyglądają wiec tak
x=pierwsza jeżeli tak -> x<n jeżeli tak -> x+n=y
wtedy wypisuje y jako sprawdzenie hipotezy
Starałem się więc przerobić w/w kod na potrzeby goldbacha ale otrzymuje błąd
iż linijka x+n=y to " invalid lvalue in assignment "
oto kod:
#include <stdio.h>
#include <stdlib.h>
int pierwsze2 (int n)
{
int i;
int p=0;
for (i=2; i <= sqrt (n); i++)
if (n % i == 0)
{
p=1;
break;
}
return p;
}
int pierwsze (int n)
{
int i;
int p=0;
for (i=2; i <= sqrt (n); i++)
if (n % i == 0)
{
p=1;
break;
}
return p;
}
int main ()
{
int n, p, wynik=0;
do {
printf ("Wpisz liczbe naturalna, n>2, n= ");
scanf ("%d", &n);
} while (2<n<= 0);
while (wynik<20)
{
p = pierwsze (n);
if (p == 0)
{
int x, y;
int p2;
for(x=0; x<n; x++)
{
p2=pierwsze2(x);
if (p2 == 0)
{
x+n=y;
printf("%d \t %d\n", n, y);
wynik++;
}
}
}
n++;
}
system ("pause");
return 0;
}
Proszę o jakąkolwiek wskazówkę
dziękuje :)