Advertisement
Guest User

Übung 4 Luca R.

a guest
Nov 20th, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "uebungen.h"
  4.  
  5. void isHappyNumber();
  6. void berechnePI();
  7. void calculatePrimeFactors();
  8.  
  9. ///Main Methode
  10. int main(){
  11.     /*
  12.      * isHappyNumber();
  13.      * calculatePrimeFactors();
  14.      * berechnePI();
  15.      * */
  16.     return 0;
  17. }
  18.  
  19.  
  20.  
  21. ///Aufgabe 1 Fröhliche Zahlen
  22. int getLastDigit(int number);
  23. int removeLastDigit(int number);
  24.  
  25. void isHappyNumber(){
  26.  
  27.     for(int i = 1; i <= 500; i++){
  28.         int currentNumber = i;
  29.         int nextNumber = 0;
  30.         while (nextNumber != 1) { //schleife wird solange durchgeführt wie Berechnungsschritt ein Ergebnis ungleich 1 ergibt
  31.  
  32.             nextNumber = 0;
  33.             while (currentNumber > 0) {
  34.                 nextNumber = nextNumber + (getLastDigit(currentNumber) * getLastDigit(currentNumber));
  35.                 currentNumber = removeLastDigit(currentNumber);
  36.             }
  37.             currentNumber = nextNumber;
  38.             if(nextNumber == 20){
  39.                 break;
  40.             }
  41.         }
  42.  
  43.         if(nextNumber == 1){
  44.             printf("%d ist eine froehliche Zahl!\n", i);
  45.         }
  46.     }
  47.  
  48. }
  49.  
  50. int getLastDigit(int number){
  51.     if(number < 10 && number < 0){
  52.         return number;
  53.     }else{
  54.         return number%10;
  55.     }
  56. }
  57.  
  58. int removeLastDigit(int number){
  59.     return (number - (number%10))/10;
  60. }
  61.  
  62. ///Aufgabe 2 Berechnung von PI
  63. void berechnePI(){
  64.  
  65.     double precision;
  66.     printf("Bitte geben Sie die Genauigkeit an (Zahl kleiner eins): ");
  67.     scanf("%lf", &precision);
  68.  
  69.     double lastResult = 0;
  70.     double currentResult =  1.0  / (2 * 0 + 1); // n = 0
  71.  
  72.     for (int n = 1; fabs(lastResult - currentResult) >= precision/4; n++) {
  73.         lastResult = currentResult;
  74.         currentResult = currentResult + pow(-1, n%2) * (1.0  / (2 * n + 1));
  75.     }
  76.  
  77.     double result = 4 * currentResult;
  78.     printf("\nPI berechnet:  %.*lf", 15, result);
  79.     printf("\nPI aus Math.h: %.*lf", 15, M_PI);
  80.     printf("\nDifferenz:     %.*lf", 15, fabs(M_PI - result));
  81.     printf("\nPrecision:     %.*lf", 15, precision);
  82. }
  83.  
  84.  
  85. void calculatePrimeFactors(){
  86.  
  87.     int number;
  88.     printf("Bitte geben sie eine Zahl zur Primfaktorzerlegung an. \n");
  89.     scanf("%d", &number);
  90.     printf("\n");
  91.  
  92.     int prim[number/2];
  93.     int index = 0;
  94.     int arrayLength = 0;
  95.  
  96.     for(int i = 2; i <= number/2; i++){
  97.         int j = 2;
  98.         while (i % j != 0 && j < i){
  99.             j++;
  100.         }
  101.         if(j == i){
  102.             prim[index] = i;
  103.             index++;
  104.         }
  105.     }
  106.  
  107.     arrayLength = index + 1;
  108.     int notPrim = 0;
  109.  
  110.     for(int i = 0; i < arrayLength; i++){
  111.         while (number % prim[i] == 0){
  112.             number = number / prim[i];
  113.             printf("%d \n", prim[i]);
  114.             notPrim = 1;
  115.         }
  116.     }
  117.     if(notPrim == 0){
  118.         printf("%d", number);
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement