Diskuze: Zjištění všech dělitelů zadaného čísla
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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.
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
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
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á.
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
Zobrazeno 8 zpráv z 8.