Hogyan kell ezt a feladatot lekodolni c++ ban?
Határozzuk meg egy természetes szám (N>1) 1-től különböző legkisebb osztó-ját!
Ciklussal kellene megoldani , de nem megy.
Lekodolnátok nekem ?
Válaszotokat elore is koszonom!
#include <iostream>
int main() {
std::cout << "Add meg a szamot: ";
int szam;
std::cin >> szam;
for(int i = 2; i <= szam; ++i) {
if(szam % i == 0) {
std::cout << "A(z) " << szam << " legkisebb osztoja " << i << '\n';
break;
}
}
}
Két(vagy több) szám közös legkisebb osztójára pedig ha rákelesel így: "c++ least common multiplier" megtalálod.
#2 No offense, de amikor egy ilyen ujjgyakorlat feladatnál valaki breakeket használ, legszívesebben hánynék.
#include <iostream>
int main() {
std::cout << "Add meg a szamot: ";
int szam;
std::cin >> szam;
int i=2;
while(szam % i != 0 ) i++;
std::cout<<"A(z) "<<szam<<" legkisebb osztoja "<<i<<std::endl;
return 0;
}
De akkor nesze break nélkül.
for(int i = 2; i <= szam; ++i) {
if(szam % i == 0) {
std::cout << "A(z) " << szam << " legkisebb osztoja " << i << '\n';
i = szam + 1;
}
}
Akkor kombináljuk a két megoldást:
int oszto;
for(oszto = 2; szam % oszto; ++oszto);
cout << oszto << endl;
Még egy plusz feltétel is oda mehet a végtelen ciklus elkerülése végett: && oszto <= szam;
Az egy dolog, hogy ki van kötve, hogy a szám nagyobb, mint egy, az egy másik, hogy nem lesz végtelen ciklus hibás bemenetnél sem :D
Legrosszabb esetben túlcsordul, és visszatér a számmal magával. Hibás kimenet, de nem végtelen ciklus.
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!