From ff7fef432a7e976649c5b9fb0accf2784737850c Mon Sep 17 00:00:00 2001 From: Leaced Date: Fri, 14 Apr 2017 16:03:46 +0200 Subject: [PATCH] =?UTF-8?q?gro=C3=9Fe=20Optimierung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Mathe/befreundete Zahlen.cpp | 64 +++++++++++++++++++ .../befreundete Zahlen/befreundete Zahlen.cpp | 45 ------------- 2 files changed, 64 insertions(+), 45 deletions(-) create mode 100644 Mathe/befreundete Zahlen.cpp delete mode 100644 Mathe/befreundete Zahlen/befreundete Zahlen.cpp diff --git a/Mathe/befreundete Zahlen.cpp b/Mathe/befreundete Zahlen.cpp new file mode 100644 index 0000000..c49becc --- /dev/null +++ b/Mathe/befreundete Zahlen.cpp @@ -0,0 +1,64 @@ +#include +#include +#include +#include + +//In Zusammenarbeit mit Nils Werner + +//Zwei verschiedene natü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() +{ + program(); + + std::cout << "\n\nProgrammende!"; + + 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; + + do{ + std::cout<< "Gib ein Limit ein: "; + getline(std::cin, input); + std::stringstream(input)>>limit; + if(limit>=ULLONG_MAX || limit<0) std::cerr << "Error: Dieses Limit ist nicht m\x94glich. "; + }while(limit>=ULLONG_MAX || limit<0); + + try + { + unsigned long long *number = new unsigned long long[limit+1]; + + std::cout<< "befreundete Zahlen sind:\n"; + + 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) + { + std::cerr << "Error: Es konnte kein Array dieser Gr\x94\xE1 \be erstellt werden. "; + program(); + } + +} diff --git a/Mathe/befreundete Zahlen/befreundete Zahlen.cpp b/Mathe/befreundete Zahlen/befreundete Zahlen.cpp deleted file mode 100644 index c1b834d..0000000 --- a/Mathe/befreundete Zahlen/befreundete Zahlen.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include - -//Zwei verschiedene natürliche Zahlen, -//von denen wechselseitig jeweils eine Zahl gleich der Summe der echten Teiler der anderen Zahl ist, -//bilden ein Paar befreundeter Zahlen. - -int main() -{ - std::string input; - unsigned int amount = 0; - - std::cout << "Gib an bis zu welcher Zahl nach befreundeten Zahlen gesucht werden soll: "; - getline(std::cin, input); - std::stringstream(input) >> amount; - - if(amount<284) - { - std::cout << "\nEs wurden keine befreundeten Zahlen gefunden."; - getch(); - return(0); - } - - std::cout << "\nBefreundete Zahlen sind:\n"; - - amount -= 219; - - unsigned int *number = new unsigned int[amount]; - - for(unsigned long long idx = 0; idx=220 && number[number[idx]-220]==idx+220) std::cout << number[idx] << " und " << number[number[idx]-220] << "\n"; - } - - delete[] number; - - getch(); - return(0); -}