Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zjištění všech dělitelů zadaného čísla

Aktivity
Avatar
Ergiler
Člen
Avatar
Ergiler:10.2.2018 21:43

Dobrý den,
Ve škole jsme začali s programováním a já se v tom neorientuji.
Chtěl bych poprosit zda by jste mě mohl někdo správně nasměrovat.
Děkuji

 
Odpovědět
10.2.2018 21:43
Avatar
Martin Petrovaj
Tvůrce
Avatar
Martin Petrovaj:10.2.2018 23:00

No skús si na začiatok uvedomiť, čo za čísla to vlastne tie delitele sú - určite sú menšie alebo rovné tvojmu číslu, ktoré kontroluješ a väčšie ako nula.

Tieto všetky čísla teda musíš skontrolovať, či spĺňajú danú podmienku, tj. či delia bezo zvyšku zadané číslo alebo nie. :-)

Nahoru Odpovědět
10.2.2018 23:00
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Ergiler
Člen
Avatar
Odpovídá na Martin Petrovaj
Ergiler:11.2.2018 0:03

Vím, že mam postupně dělit, ale nevím, jak udělat aby se to číslo, kterým dělím postupně zvětšovalo a vypisovalo to dělitele.
Jednoduše řečeno, nejsem schopen zapsat to v kódu.

 
Nahoru Odpovědět
11.2.2018 0:03
Avatar
Lako
Člen
Avatar
Lako:11.2.2018 0:24

Uplně primitivně že vemeš každé číslo, které je menší nebo rovno polovině toho čísla a budeš kontrolovat jestli je modulo 0... pak to jde efektivněji, přes rozklad na prvočísla..

" nevím jak to napsat v kódu" se při žádosti o pomoc u domácího úkolu běžně překládá jako "jsem líný cokoliv vygůglit a zkusit". Když přijdeš alespoň s nějakým nástinem kódu (například cyklus víš že tam bude), budou na to lidi nahlížet lépe

 
Nahoru Odpovědět
11.2.2018 0:24
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:11.2.2018 0:36

Napíšu ti tu relativně snadné řešení, a ty mi slib, že zajdeš za svým učitelem programování a necháš si to vysvětlit, ok? :)

public List<int> ZiskejDelitele(int setrenecislo)
{
        List<int> result = new List<int>();
        int delitel = 1;
        while (delitel <= setrenecislo)
        {
                if (setrenecislo % delitel == 0) result.Add(delitel);
                delitel++;
        }
        return result;
}

Jinak neboj se mrknout sem: https://www.itnetwork.cz/csharp

Nahoru Odpovědět
11.2.2018 0:36
Programátor je stroj k převodu kávy na kód.
Avatar
Marian Šámal:11.2.2018 12:17

Není to až tak těžký.
Asi víš, že budeš potřebovat loop, doporučuju for. Číslo, na kterém začínáš je jedna, číslo na kterém končíš je číslo, které je v proměnné jménem num. Takže

for (int i = 1; i < num; i++)

Nyní v proměnné i je číslo, o kterém potřebuješ zjistit, zda je dělitel čísla num. Co je dělitel? Ten dostaneme tak, že pokud zbytek po dělení je nula. Jak v C# spočítáme zbytek po dělení? K tomu se používá operátor % (tzv. modulo).

num % i == 0

Tak se zjistí, jestli je číslo i dělitel. Pak to už jen stačí hodit do podmínky a číslo i vypsat.

if (num % i == 0)
{
    Console.WriteLine(i);
}

Hotový kód by tedy vypadal takhle. Dejme tomu, že číslo o kterém to chceme zjisti je šest.

int num = 6;

for (int i = 1; i < num; i++)
{
    if (num % i == 0)
    {
        Console.WriteLine(i);
    }
}

Pokud chceš aby uživatel dané číslo zadal, nahraď int num = 6; s

int num = int.Parse(Console.ReadLine());

Kód jsem psal z paměti, možná nefunguje...

PS. Tohle je úloha ze střední školy / gymnázia? Jen mě to zajímá.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.2.2018 12:17
Bagr
Avatar
Ergiler
Člen
Avatar
Odpovídá na Marian Šámal
Ergiler:11.2.2018 23:14

Diky, Gymnásium

 
Nahoru Odpovědět
11.2.2018 23:14
Avatar
Odpovídá na Marian Šámal
Radek Chalupa:12.2.2018 6:44

Akorát je zkytečné zkoušet dělit číslem větším než polovina toho num.
PS: možná je to úloha z plzneňských práv:-)

Radek Chalupa
http://www.radekchalupa.cz

 
Nahoru Odpovědět
12.2.2018 6:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.