Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
ceps Forumaš(ica)

Pridružen/a: 08. 10. 2010. (13:03:07) Postovi: (13A)16
|
Postano: 22:40 sri, 17. 11. 2010 Naslov: 15. zadatak iz zadataka za praktični kolokvij |
|
|
Napišite program koji kao unos prima paran prirodan broj n > 2 i provjerava da li se n može prikazati kao zbroj dva prosta broja. Ako traženi rastav postoji, onda ga treba i ispisati. Ako postoji više rastava, svejedno je koji se ispisuje. Na primjer, za n = 4 program treba ispisati 4 = 2 + 2, a za n = 10 program treba ispisati 10 = 3 + 7 ili 10 = 5 + 5.
Uputa: Složite for() petlju u kojoj varijabla i ide od 2 do n - 2, a u petlji se provjerava jesu li i i n-i prosti brojevi.
[code:1]
#include <stdio.h>
int main ()
{
int n, i, prost1 = 1, prost2 = 1, x, y, j, t;
printf ("Upisite broj: "); scanf ("%d", &n);
for (i = 2; i <= n/2; i++)
{
t = n - i;
for (j = 2; j < i; j++) {if (i % j == 0) prost1 = 0; }
for(j = 2; j < t; j++) {if (t % j == 0) prost2 = 0;}
if (prost1 && prost2)
{
x = i;
y = t;
}
}
printf ("%d = %d + %d", n, x, y);
return 0;
}
[/code:1]
Evo, najjednostavniji dio programa, bez provjera za to da li je n paran broj veći od 2. Program dobro radi za 4 = 2 + 2, i tu sam se taman poveselio, ali ne radi za bilo što drugo. :)
Vjerojatno je nešto očito, ali ja to ne vidim. Pomoć!
Napišite program koji kao unos prima paran prirodan broj n > 2 i provjerava da li se n može prikazati kao zbroj dva prosta broja. Ako traženi rastav postoji, onda ga treba i ispisati. Ako postoji više rastava, svejedno je koji se ispisuje. Na primjer, za n = 4 program treba ispisati 4 = 2 + 2, a za n = 10 program treba ispisati 10 = 3 + 7 ili 10 = 5 + 5.
Uputa: Složite for() petlju u kojoj varijabla i ide od 2 do n - 2, a u petlji se provjerava jesu li i i n-i prosti brojevi.
Kod: |
#include <stdio.h>
int main ()
{
int n, i, prost1 = 1, prost2 = 1, x, y, j, t;
printf ("Upisite broj: "); scanf ("%d", &n);
for (i = 2; i <= n/2; i++)
{
t = n - i;
for (j = 2; j < i; j++) {if (i % j == 0) prost1 = 0; }
for(j = 2; j < t; j++) {if (t % j == 0) prost2 = 0;}
if (prost1 && prost2)
{
x = i;
y = t;
}
}
printf ("%d = %d + %d", n, x, y);
return 0;
}
|
Evo, najjednostavniji dio programa, bez provjera za to da li je n paran broj veći od 2. Program dobro radi za 4 = 2 + 2, i tu sam se taman poveselio, ali ne radi za bilo što drugo.
Vjerojatno je nešto očito, ali ja to ne vidim. Pomoć!
|
|
[Vrh] |
|
pbakic Forumaš(ica)

Pridružen/a: 05. 10. 2009. (17:48:30) Postovi: (143)16
Spol: 
|
|
[Vrh] |
|
satja Forumaš(ica)

Pridružen/a: 16. 05. 2010. (10:44:17) Postovi: (F1)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
pbakic Forumaš(ica)

Pridružen/a: 05. 10. 2009. (17:48:30) Postovi: (143)16
Spol: 
|
|
[Vrh] |
|
ceps Forumaš(ica)

Pridružen/a: 08. 10. 2010. (13:03:07) Postovi: (13A)16
|
|
[Vrh] |
|
Phoenix Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Flame Forumaš(ica)

Pridružen/a: 12. 08. 2009. (02:14:39) Postovi: (53)16
Spol: 
|
|
[Vrh] |
|
|