Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include "uebungen.h"
- void isHappyNumber();
- void berechnePI();
- void calculatePrimeFactors();
- ///Main Methode
- int main(){
- /*
- * isHappyNumber();
- * calculatePrimeFactors();
- * berechnePI();
- * */
- return 0;
- }
- ///Aufgabe 1 Fröhliche Zahlen
- int getLastDigit(int number);
- int removeLastDigit(int number);
- void isHappyNumber(){
- for(int i = 1; i <= 500; i++){
- int currentNumber = i;
- int nextNumber = 0;
- while (nextNumber != 1) { //schleife wird solange durchgeführt wie Berechnungsschritt ein Ergebnis ungleich 1 ergibt
- nextNumber = 0;
- while (currentNumber > 0) {
- nextNumber = nextNumber + (getLastDigit(currentNumber) * getLastDigit(currentNumber));
- currentNumber = removeLastDigit(currentNumber);
- }
- currentNumber = nextNumber;
- if(nextNumber == 20){
- break;
- }
- }
- if(nextNumber == 1){
- printf("%d ist eine froehliche Zahl!\n", i);
- }
- }
- }
- int getLastDigit(int number){
- if(number < 10 && number < 0){
- return number;
- }else{
- return number%10;
- }
- }
- int removeLastDigit(int number){
- return (number - (number%10))/10;
- }
- ///Aufgabe 2 Berechnung von PI
- void berechnePI(){
- double precision;
- printf("Bitte geben Sie die Genauigkeit an (Zahl kleiner eins): ");
- scanf("%lf", &precision);
- double lastResult = 0;
- double currentResult = 1.0 / (2 * 0 + 1); // n = 0
- for (int n = 1; fabs(lastResult - currentResult) >= precision/4; n++) {
- lastResult = currentResult;
- currentResult = currentResult + pow(-1, n%2) * (1.0 / (2 * n + 1));
- }
- double result = 4 * currentResult;
- printf("\nPI berechnet: %.*lf", 15, result);
- printf("\nPI aus Math.h: %.*lf", 15, M_PI);
- printf("\nDifferenz: %.*lf", 15, fabs(M_PI - result));
- printf("\nPrecision: %.*lf", 15, precision);
- }
- void calculatePrimeFactors(){
- int number;
- printf("Bitte geben sie eine Zahl zur Primfaktorzerlegung an. \n");
- scanf("%d", &number);
- printf("\n");
- int prim[number/2];
- int index = 0;
- int arrayLength = 0;
- for(int i = 2; i <= number/2; i++){
- int j = 2;
- while (i % j != 0 && j < i){
- j++;
- }
- if(j == i){
- prim[index] = i;
- index++;
- }
- }
- arrayLength = index + 1;
- int notPrim = 0;
- for(int i = 0; i < arrayLength; i++){
- while (number % prim[i] == 0){
- number = number / prim[i];
- printf("%d \n", prim[i]);
- notPrim = 1;
- }
- }
- if(notPrim == 0){
- printf("%d", number);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement