Nagyon tökéletes az a szám, amely osztói összegének osztóit összeadva, a szám kétszeresét kapjuk. A feladat tehát: keressünk programmal nagyon tökéletes számokat!?
Ilyen például a 16, mert osztóinak összege 31, a 31 osztóit összeadva pedig 32-t kapunk.
-----------------------------------------
Ezt a feladatot kaptam, C++ -ban kellene megoldanom, de azt sem tudom, hogy hogyan álljak neki.
Bontsd fel részfeladatokra:
1. döntsd el, hogy 'A' szám osztója-e B-nek
2. határozd meg B szám osztóit
3. határozd meg B szám osztóinak összegét
Ezeket szépen írd meg függvényekbe, és hívogasd okosan.
Hint: 'A' szám akkor osztója B-nek, ha a B/A egészosztás maradéka 0. A maradékot a % operátorral tudod kiszámoltatni: (B % A).
A mellékelt leírást olvasva kb. én ott lyukadtam ki, hogy csak a kettő hatványai között található a fent említett szám. Írtam egy szösszenetet, lehet tovább fejleszteni:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int osztoosszeg(int osztando){
int osszeg = 0;
int meddig = sqrt(osztando);
for (int i = 1; i <= meddig; i++){
if (osztando % i == 0){
osszeg += i;
osszeg += osztando / i;
}
}
if (floor(sqrt(osztando)) == sqrt(osztando)) return osszeg - sqrt(osztando);
else return osszeg;
}
int main(){
for (int i=1; i <= 100000000; i *= 2 ) if ((osztoosszeg(osztoosszeg(i))) == 2 *i ) cout << i << endl;
system("PAUSE");
return 0;
}
"A mellékelt leírást olvasva kb. én ott lyukadtam ki, hogy csak a kettő hatványai között található a fent említett szám."
Nagyon kíváncsi lennék, hogy erre hogy lyukadtál ki. Ugyanis egy kettőhatvány osztóinak az összege mindig páratlan lesz (minden osztója páros kivéve az 1), és egy páratlan szám nem lehet semmilyen egésznek a kétszerese.
io, itt még van egy csavar! :) Itt osztók összegének osztóinak összegét vesszük. Kettő hatvány esetén az osztók összege páratlan, ez igaz. DE ennek is vesszük az osztóinak összegét, ami viszont már lehet páros. :)
Ezzel persze még nem igazoltam SimkoL-t, viszont "nagyon tökéletes számok" keresés első találatán levő cikk (ld #1-ben is) írja, hogy bizonyos kettő hatványok lesznek ezek.
Nem kell 'elkettyenni'. A negyedik unoka után már én is örülök ha nem p.silek mellé :)
Én az egészből annyit szűrtem le, hogy páratlan 'nagyon tökéletes' számot még nem találtak - bár a leírás régi - és nagy valószínűséggel csak a kettő hatványi lehetnek. Utána nem olvastam, csak 'hozott anyagból' dolgoztam. Valószínű lehetne gyorsítani rajta, csak mintaképpen írtam az egészet.
Bár nem nagyon érdekel, de kíváncsi lennék rá aki lepontozott mi érvet tud felhozni 'ellenem' - nem ez az első ilyen jellegű kérdésem, sajnos - Legyen akkor szakmai vita - vagy csak egymás 'vérszívása', mint tabaki kollegával :) -, de ezt nem értem.
Nagyon szeretem a szakmai 'vitákat' mert abból tanul mindenki - ennyiből jobb a Prog.hu -, de itt sajnos a sok 'sötétben bujkáló ellenforradalmár' illegalitásban marad.
Remélem tabaki kolléga a maga 'cirkalmas' nyelvén kicsit megerősít, de az sem baj ha elveszi a kedvem
Ööö... ööö... én most tartok ott, hogy érdekes lenne megírni ezt a programot pascalban... De lehet, hogy mégis egyszerűbb odacsapni a piros mancsra. Hmmm, ízlelgetem a hatalmat, ami a szürke kis balegérgombban fickándozik!
Sajnos, a sötétben bujkálók megítélésében nemigen telik tőlem józan ítélet, amióta megfigyeltem, hogy a régebbi korrekt és hasznos válaszaimat valaki lelkiismeretesen lenullázza -- gondolom, valaha beszóltam neki, és kifogyott az érvekből.
Az kétségtelen, hogy a kész megoldások hasznosságát illetően nincs mindig fedésben a kettőnk véleménye, de az emberi faj vonzó tulajdonsága, hogy mindez értelmes párbeszédben oldódhat föl. Másfelől viszont az ember gyarló, és kinek-kinek szíve joga erről az oldaláról bemutatkoznia. Más módon, de én is megteszem nap mint nap. :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!