#include <limits>
#include <locale>
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
unsigned int sumDividers(unsigned int num)
{
unsigned int sum=0,
maximum=num/2+1;
for(unsigned int i=1;i<maximum;i++)
if(!(num%i))sum+=i;
return sum;
}
int main()
{
locale::global(locale("rus_rus.866"));
unsigned int N;
while(true)
{
wcout<<L"Введите число N:";
wcin>>N;
if(wcin.fail())
{
wcout<<L"Ошибочный ввод"<<endl;
wcin.clear();
wcin.ignore(numeric_limits<streamsize>::max(),L'\n');
}
else break;
}
wcout<<L"Дружественные числа от 1 до "<<N<<L":"<<endl;
clock_t startTime=clock();
for(unsigned int i=0;i<N;i++)
{
unsigned int num1=i+1,num2=sumDividers(num1);
if(num1<num2&&num2<=N&&sumDividers(num2)==num1)
{
wcout<<setw(10)<<num1<<L" и "<<setw(10)<<num2<<endl;
}
}
clock_t endTime=clock();
wcout<<L"Время работы:"
<<setprecision(3)<<static_cast<double>(endTime-startTime)/CLOCKS_PER_SEC<<L"(сек)"<<endl;
system("PAUSE");
return 0;
}
Введите число N:200000
Дружественные числа от 1 до 200000:
220 и 284
1184 и 1210
2620 и 2924
5020 и 5564
6232 и 6368
10744 и 10856
12285 и 14595
17296 и 18416
63020 и 76084
66928 и 66992
67095 и 71145
69615 и 87633
79750 и 88730
100485 и 124155
122265 и 139815
122368 и 123152
141664 и 153176
142310 и 168730
171856 и 176336
176272 и 180848
Время работы:75.6(сек)
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.