Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 26. 11. 2010 16:54 — Editoval Majki (26. 11. 2010 16:55)

Majki
Příspěvky: 120
Reputace:   
 

pascal goldbachova hypoteza

zdravim
zadání: Podle tzv. Goldbachovy hypotézy lze každé celé číslo větší než 5 vyjádřit jako součet tří prvočísel. Vstupní číslo nebude větší než 10000.Každý nalezený rozklad zapište na zvláštní řádek na standardní výstup, sčítance oddělte mezerami. Pokud rozklad zadaného čísla na součet tří prvočísel neexistuje, zapište na výstup slovo "neexistuje".Rozklady, které se liší pouze pořadím sčítanců, nepovažujeme za různé.
Nápověda: Nejprve si vygenerujte všechna potenciálně využitelná prvočísla pomocí metody Eratosthenovo síto.

už mám síto, ale nevím co dál jestli ty čísla ze síta ukládat do pole (nebo do tří) a pak nejak zkoumat kdy se soucet tri cisel z polí rovná vstupnímu číslu.

zde nabizim ke konrole kod sita, melo by to jet korektne.

Code:

program prvocisla_sito;
const n=MAXINT;
var a,i,m:integer;pole:array[1..n]of boolean;
begin
readln(m);
for i:=2 to m do
        begin
        pole[i]:=true;
        end;
i:=1;
repeat
        inc(i);
        a:=i;
        while (a*i)<=m do
                begin
                pole[a*i]:=false;
                a:=a+1;
                end;
until i>=m;
for i:=2 to m do
        begin
        if pole[i]=true then
        write(i,' ');
        end;
end.

dekuji vsem za napady a ochotu

Offline

  • (téma jako vyřešené označil(a) Majki)

#2 26. 11. 2010 20:40

vojta01
Příspěvky: 63
Reputace:   
 

Re: pascal goldbachova hypoteza

Ahoj, nezkoumal jsem ten kód na Eratosthenovo síto, ale doufám že funguje.
Pokud jsem to dobře pochopil, tak v poli "pole" s indexy od 1 do M je hodnota true, pokud dané číslo je prvnočíslo, v opačném případě false.

Nyní stačí toto pole projít pomocí dvou cyklů: Nejprve 1. cyklus určí první prvočíslo A, číli v rozsahu od 2 do M-2, pokud je dané číslo prvočíslo, pak ve 2. cyklu určí druhé prvočíslo B z rozsahu A+1 až M-1, pokud je druhé číslo prvočíslo, pak pokud je číslo M-A-B také prvočíslo, pak byla nalezena jedna z hledaných možností.

Code:

for i:=2 to M-2 do
   if pole[i] = true then
      for j:=i+1 to M-1 do
         if pole[j] = true then
            if pole[M-i-j] = true then
               writeln(i,' ',j,' ',M-i-j);

Offline

 

#3 27. 11. 2010 20:54 — Editoval Majki (27. 11. 2010 21:34)

Majki
Příspěvky: 120
Reputace:   
 

Re: pascal goldbachova hypoteza

↑ vojta01:
tak tohle nejede uplne podle zadani ale uz vim jak na to
je to pro me vyresene dekuju

jeste bych potreboval poradit s jednou http://forum.matweb.cz/viewtopic.php?pid=148527#p148527

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson