Naprogramování programu s prvočísly.

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
Uživatelský avatar
zezr
Level 4.5
Level 4.5
Příspěvky: 1852
Registrován: 19 říj 2010 18:48

Naprogramování programu s prvočísly.

Příspěvek od zezr »

Ahoj
Asi jako každý student mám za domácí úkol:Navrhněte algoritmus, který vypíše všechna prvočísla menší, než zadané číslo.
No upřímně není problém program napsat ale já jsem nepochopil jak funguje for
Byl by tu někdo tak ochotný a napsal by mi zcela jasně jak to funguje? Programujeme v C.
Prosím nepište sem že na netu je.... prostě jsem to nepochopil ani z netu ani od učitele. Děkuji
zezr
Svět ztrácí genie. Einstein umřel ,Mozart umřel a mě je taky nějak špatně!

CPU: Ryzen 5 3600 , MB: Asus Crosshair VI EXTREME, GPU: MSI ARMOR GTX 1070 Ti , Ram: Cruicial 32GB @3733MHz Zdroj: CX 550M
HDD: Segate 7200.14 2TB SSD: OCZ-ARC100 256GB, Kingston A1000 512GB
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7404
Registrován: 23 pro 2010 09:23

Re: Naprogramování programu s prvočísly.

Příspěvek od faraon »

Příkaz for v Céčku je vlastně jen rozšířené while, takže když napíšeš:

Kód: Vybrat vše

for (i=0;i<10;++i)
    printf("%d\n",i);

je to úplně to samé jako bys napsal tohle:

Kód: Vybrat vše

i=0;
while (i<10)
      {
      printf("%d\n",i);
      ++i;
      }

A pro upřesnění, máš tam tři bloky oddělené středníky. To co je v prvním bloku se provede před spuštěním cyklu. To co je v druhém bloku je podmínka, dokud platí, cyklus se opakuje. A to co je ve třetím bloku je činnost, která se provede na konci každé iterace, předtím než se testuje podmínka. Kterýkoliv z těch bloků může být prázdný, a když vynecháš všechny, vytvoříš nekonečný cyklus:

Kód: Vybrat vše

for (;;)
    {
    ...
    }

Ještě nějaká nejasnost?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
zezr
Level 4.5
Level 4.5
Příspěvky: 1852
Registrován: 19 říj 2010 18:48

Re: Naprogramování programu s prvočísly.

Příspěvek od zezr »

Dobře takže to co v tom je tak v základu je "i" rovno 2 a pak se přidává a přidává po 1 dokud nebude "i" to číslo které jsem si zvolil. Po té co je toto číslo stejné jako to co jsem si zvolil se začne dít co?(Pokud ti tento kod příjde povědomí tak je od tebe(částečně) pardon za vypůjčení
ale já potřebuji jasnej příklad.)
edit1 A ten druhej for generuje čísla zase od 2-našeho čísla a pak se to mezi sebou dělí a zjištujě to jestli to číslo má nějakej dělitel bezezbytku a pak to vypíše výsledky ne?

Kód: Vybrat vše

#include <stdio.h>


int main()
    {
    int i,j,cislo;

   printf("\n Zadej hodnotu maximalniho CELEHO cisla");
   scanf("%i",&cislo);


    for (i=2;i<cislo;++i)
        {
        for (j=2;j<i;++j)
            if (i%j==0)
               break;
        if (i==j)
           printf("%d\n",i);
        }

    return 0;
    }
Svět ztrácí genie. Einstein umřel ,Mozart umřel a mě je taky nějak špatně!

CPU: Ryzen 5 3600 , MB: Asus Crosshair VI EXTREME, GPU: MSI ARMOR GTX 1070 Ti , Ram: Cruicial 32GB @3733MHz Zdroj: CX 550M
HDD: Segate 7200.14 2TB SSD: OCZ-ARC100 256GB, Kingston A1000 512GB
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7404
Registrován: 23 pro 2010 09:23

Re: Naprogramování programu s prvočísly.

Příspěvek od faraon »

Cyklus i bere všechna čísla od 2 až po číslo o 1 menší než zadané. Jakmile se dostane až k němu, program skončí.
Cyklus j testuje jestli je i prvočíslo, prostě se ho pokusí vydělit všemi čísly od 2 až po číslo o 1 menší než i, a pokud mu to vyjde beze zbytku, ví že to není prvočíslo.

Pozor na jeden rozdíl! Když budeš mít cyklus

Kód: Vybrat vše

for (i=1;i<10;++i)

tak ti napočítá od 1 do 9. Ale když uděláš

Kód: Vybrat vše

for (i=1;i<=10;++i)

tak napočítá od 1 do 10! Vidíš v čem je ten rozdíl?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
zezr
Level 4.5
Level 4.5
Příspěvky: 1852
Registrován: 19 říj 2010 18:48

Re: Naprogramování programu s prvočísly.

Příspěvek od zezr »

Jo rozdíl vidím. Jsem moc rád že jsi mi to vysvětlil. Opravdu děkuji.
Svět ztrácí genie. Einstein umřel ,Mozart umřel a mě je taky nějak špatně!

CPU: Ryzen 5 3600 , MB: Asus Crosshair VI EXTREME, GPU: MSI ARMOR GTX 1070 Ti , Ram: Cruicial 32GB @3733MHz Zdroj: CX 550M
HDD: Segate 7200.14 2TB SSD: OCZ-ARC100 256GB, Kingston A1000 512GB
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na „Programování a tvorba webu“