2017-04-14 16:03:46 +02:00
|
|
|
|
#include<conio.h>
|
|
|
|
|
#include<iostream>
|
|
|
|
|
#include<sstream>
|
|
|
|
|
#include<new>
|
2017-12-05 19:23:11 +01:00
|
|
|
|
#include <stdio.h>
|
2017-04-14 16:03:46 +02:00
|
|
|
|
|
|
|
|
|
//In Zusammenarbeit mit Nils Werner
|
|
|
|
|
|
|
|
|
|
//Zwei verschiedene nat<61>rliche Zahlen,
|
|
|
|
|
//von denen wechselseitig jeweils eine Zahl gleich der Summe der echten Teiler der anderen Zahl ist,
|
|
|
|
|
//bilden ein Paar befreundeter Zahlen.
|
|
|
|
|
|
|
|
|
|
int divSum(int number);
|
|
|
|
|
void program();
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
2017-12-05 19:23:11 +01:00
|
|
|
|
printf("Gib ein Limit ein: ");
|
2017-04-14 16:35:00 +02:00
|
|
|
|
|
2017-04-14 16:03:46 +02:00
|
|
|
|
program();
|
|
|
|
|
|
2017-12-05 19:23:11 +01:00
|
|
|
|
printf("\n\nProgrammende!");
|
2017-04-14 16:03:46 +02:00
|
|
|
|
|
|
|
|
|
getch();
|
|
|
|
|
return(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int divSum(int number)
|
|
|
|
|
{
|
|
|
|
|
int sum = 0;
|
|
|
|
|
for (int idx = 1; idx*2 <= number; idx++) if(number%idx==0) sum += idx;
|
|
|
|
|
return (sum);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void program()
|
|
|
|
|
{
|
|
|
|
|
unsigned long long limit = 0;
|
|
|
|
|
std::string input;
|
|
|
|
|
|
2017-04-14 16:35:00 +02:00
|
|
|
|
do
|
|
|
|
|
{
|
2017-04-14 16:03:46 +02:00
|
|
|
|
getline(std::cin, input);
|
|
|
|
|
std::stringstream(input)>>limit;
|
2017-12-05 19:23:11 +01:00
|
|
|
|
if(limit>=ULLONG_MAX || limit<0) printf("Error: Dieses Limit ist nicht m\x94glich. Gib ein anderes Limit ein: ");
|
2017-04-14 16:03:46 +02:00
|
|
|
|
}while(limit>=ULLONG_MAX || limit<0);
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
unsigned long long *number = new unsigned long long[limit+1];
|
|
|
|
|
|
2017-12-05 19:23:11 +01:00
|
|
|
|
printf("befreundete Zahlen sind:\n");
|
2017-04-14 16:03:46 +02:00
|
|
|
|
|
|
|
|
|
for (int idx = 220; idx<= limit; idx++)
|
|
|
|
|
{
|
|
|
|
|
number[idx] = divSum(idx);
|
|
|
|
|
if(idx > number[idx]) if (idx==number[number[idx]]) std::cout << idx << " und " << number[idx] << "\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
delete[] number;
|
|
|
|
|
}
|
|
|
|
|
catch(std::bad_alloc& ba)
|
|
|
|
|
{
|
2017-12-05 19:23:11 +01:00
|
|
|
|
printf("Error: Es konnte kein Array dieser Gr\x94\xE1 \be erstellt werden. Gib ein anderes Limit ein: ");
|
2017-04-14 16:35:00 +02:00
|
|
|
|
program();
|
|
|
|
|
}
|
|
|
|
|
catch(std::exception& e)
|
|
|
|
|
{
|
2017-12-05 19:23:11 +01:00
|
|
|
|
printf("Error: Beim Erstellen des Arrays ist ein unbekannter Fehler aufgetreten. Gib ein anderes Limit ein: ");
|
2017-04-14 16:03:46 +02:00
|
|
|
|
program();
|
|
|
|
|
}
|
|
|
|
|
}
|