Spřátelená čísla - pomoc s programem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spřátelená čísla - pomoc s programem – C / C++ – Fórum – Programujte.comSpřátelená čísla - pomoc s programem – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Bublina0
Newbie
31. 10. 2011   #1
-
0
-

Ahoj hoši, tak jsem to zase :) 

Tentokrát jsme dostali za úkol program, který bude detekovat spřátelená čísla.

Spřátelená čísla jsou taková celá kladná čísla, že jedno je rovno součtu vlastních dělitelů čísla druhého. Například čísla 220 a 284 jsou spřátelená, protože:
seznam všech vlastních dělitelů 220:
  1, 2, 4, 5, 10, 11, 20, 22, 44, 55 a 110
  1+2+4+5+10+11+20+22+44+55+110 = 284

a zároveň

seznam všech vlastních dělitelů 284:
  1, 2, 4, 71 a 142
  1+2+4+71+142 = 220

Vstupem programu je horní mez do které se mají dané čísla vypisovat. Výstupem jsou dvojice spřátelených čísel, které jsou řazeny vlevo menší a vpravo větší.

Chtěla jsem se zeptat, zda by mi někdo poradil, jak do toho. Nějakou základní tezi, nebo i s programem pomohl :)

Nahlásit jako SPAM
IP: 195.113.242.–
liborb
~ Redaktor
+18
Guru
1. 11. 2011   #2
-
0
-

Můžeš postupovat následovně: v cyklu projdeš všechna čísla od začátku až po horní mez. Pro každé číslo (a) spočítáš jeho součet dělitelů (na výpočet si udělej funkci). Pak vezmeš tento součet - toto výsledné číslo (b) - a pro něj taky spočítáš součet dělitelů (c) a výsledek porovnáš s původním číslem (a == c) - pokud se rovnají, tak máš spřátelená čísla (možná optimalizace).

Funkce na výpočet součtu dělitelů bude obsahovat cyklus (pro začátek od 1 do číslo - 1), kde se bude testovat dělitelnost zadaného čísla (zbytek po dělení) a dělitele sčítat (možná optimalizace).

Nahlásit jako SPAM
IP: 78.80.52.–
Šťouchal0
Stálý člen
4. 11. 2011   #3
-
0
-

Koukám, že se tu rojí prváci fakult IT :-)

K problému, začal bych tím, že bych sestavil program, který bude testovat všechny možnosti - neboli hrubou silou. A dál už jen přemýšlet jak to optimalizovat.

Nahlásit jako SPAM
IP: 213.168.191.–
Rejpal
~ Anonymní uživatel
1 příspěvek
4. 11. 2011   #4
-
0
-

Hele nechodíš náhodou na FIT? jen že totálně stejný zadání tam je... Pokud příspěvek od "Vágner" je od toho Vágnera co myslim tak si celkem v <|>... Patří ti to :-D nemáš zkoušet podváadět :-D

Nahlásit jako SPAM
IP: 195.113.242.–
Kingoz
~ Anonymní uživatel
2 příspěvky
4. 11. 2011   #5
-
0
-

Řekl bych že ten vágner je nejspíš fejk, ale pokud ne, tak to mas blby

anyway, za pár minut se to dá napsat pomocí několika cyklů brutální silou (takže s 12 body nepočítat)

Nahlásit jako SPAM
IP: 147.32.157.–
Šťouchal0
Stálý člen
4. 11. 2011   #6
-
0
-

#11 Kingoz
Jen musím upozornit, že řešení hrubou silou je trošku náročné. Pokud se to změří časově, tak to jsou nechutná čísla - klidně si dojít na oběd :-)

Nahlásit jako SPAM
IP: 213.168.191.–
Kingoz
~ Anonymní uživatel
2 příspěvky
4. 11. 2011   #7
-
0
-

#12 Šťouchal


Jo,  to vím, taky jsem dostal jenom 5 bodů, maximum je 12, ale jsem rád že jsem to napsal vůbec takhle a na optimalizaci nemám čas.

Nahlásit jako SPAM
IP: 147.32.157.–
Šťouchal0
Stálý člen
4. 11. 2011   #8
-
0
-

Optimalizaci doporučuji nakreslit na papír - jde to udělat poměrně rychle (v rámci jednotek hodin).

Nahlásit jako SPAM
IP: 213.168.191.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 73 hostů

Podobná vlákna

Pomoc s programem — založil Pepuna

Pomoc s programem — založil undatra

Pomoc s programem C++ — založil Marek

Pomoc s programem ... — založil Bublina

Pomoc s programem — založil Zugi

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý