Ebben a c++ programnak mi a hibája?
Feladat szövege:
A matematikusok barátságos számoknak nevezik azokat a számpárokat, ahol az egyik szám nála kisebb osztóinak összege egyenlő a másik számmal és viszont. Ilyen számpár például a 220 és a 284, hiszen: a 220 nála kisebb osztói: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110, s ezek összege 284; a 284 nála kisebb osztói: 1, 2, 4, 71, 142, s ezek összege 220. A feladat egy olyan program írása, mely a barátságos számpárokat állítja elõ megadott határig.
Nem tudom mi a hibája ... Tökéletesen működik, de mégis valamiért kiírja a 408 - 672 számpárt ... De miért ?! Később se csinál semmi hibát ( megnéztem 100.000- ig a barátságos számokat ) ettől egyig mindet kiírta, de mégis a 408-672 párt is kiírta, pedig azok nem is barátságos számok ... Vajon miért ?
#include <iostream>
using namespace std;
int main()
{
int osztok=0;
int osztokN=0;
for(int i=2; i<1000; i++)
{
for(int j=1; j<((i/2)+1); j++)
{
if( i % j ==0)
{
osztok+=j;
}
}
for(int n=1; n<((osztok/2)+1); n++)
{
if( osztok % n == 0)
{
osztokN+=n;
}
if(osztokN==i && i!=osztok)
{
cout << "A par ket szama: " << i << " es " << osztok <<endl;
osztokN=0;
}
}
osztokN=0;
osztok=0;
}
std::cin.ignore();
std::cin.get();
return 0;
}
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!