Kezdőoldal » Számítástechnika » Programozás » Egy szám osztóit hogyan lehet...

Egy szám osztóit hogyan lehet meghatározni?

Figyelt kérdés
Például 100-nak az összes osztója, nem csak az osztói számát, hanem magát az osztókat is tudjam használni műveletekhez.
2015. máj. 3. 19:14
1 2
 1/15 anonim ***** válasza:
100%
Biztos, hogy van elegánsabb módja is, de a legegyszerűbb, ha modulus-szal végighaladsz az adott számig bezárólag az összes pozitív egész számon, és ahol 0 a maradék azt tárolod egy int-ben.
2015. máj. 3. 19:19
Hasznos számodra ez a válasz?
 2/15 anonim ***** válasza:
Bocs, az adott int-et nyomod be egy array-be.
2015. máj. 3. 19:22
Hasznos számodra ez a válasz?
 3/15 A kérdező kommentje:
Köszönöm!
2015. máj. 3. 19:24
 4/15 anonim ***** válasza:
Itt egy gyorsabb megoldás(python): [link]
2015. máj. 3. 19:25
Hasznos számodra ez a válasz?
 5/15 anonim ***** válasza:
100%
Nem kell a számig, max a feléig.
2015. máj. 3. 19:35
Hasznos számodra ez a válasz?
 6/15 anonim ***** válasza:
#5-nek igaza van, nem gondoltam rendesen végig a válaszomat.
2015. máj. 3. 20:05
Hasznos számodra ez a válasz?
 7/15 anonim ***** válasza:
Nem a feléig, hanem a gyökéig, feltételezve hogy minden lépésnél kettőt kapsz. Mivel a szám osztói 1 és n között találhatóak (a számnak osztója saját maga is).
2015. máj. 3. 20:33
Hasznos számodra ez a válasz?
 8/15 A kérdező kommentje:

Így sikerült megcsinálnom:


int num=100;

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

if (num % i == 0)

cout << i << endl;

}

2015. máj. 3. 21:24
 9/15 anonim ***** válasza:

Ez működik amint látod, de elég num feléig menni így.


Másik megoldással - amire #7 akart kilyukadni - pedig elég num gyökéig menni. De ebben a megoldásban el kell osztani minden talált osztóval numot, és akkor kapod meg a num gyöke és num fele között levő osztókat.

2015. máj. 3. 21:31
Hasznos számodra ez a válasz?
 10/15 SimkoL ***** válasza:

#include <cstdlib>

#include <iostream>

#include <math.h>


using namespace std;


int osztoszam(int osztando){

int meddig = (int)sqrt(osztando);

for (int i = meddig; i >= 1; --i)

if (meddig * i == osztando) cout << i << " ";

else if (osztando % i == 0) cout << i << " " << osztando / i << " ";

}


int main() {

osztoszam(12);

system("PAUSE");

return 0;

}

2015. máj. 3. 21:46
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!