VF-

Untitled

VF-
Nov 17th, 2022 (edited)
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | Source Code | 0 0
  1. #include <stdio.h>
  2.  
  3. int gyorsitotar[10000];
  4. int also, felso;
  5.  
  6. void int_beolvas(int* x);
  7. int baratsagos(int a, int b);
  8. int kisebboszto_osszeg(int szam);
  9.  
  10. int main()
  11. {
  12.     // fuggvenyek hivasa, szamparok kiiratasa (a, b) formatumban
  13.  
  14.     while (1) {
  15.         int_beolvas(&also);
  16.         int_beolvas(&felso);
  17.  
  18.         if (also < felso) {
  19.             break;
  20.         }
  21.  
  22.         printf("Invalid input\n");
  23.     }
  24.  
  25.     for (int i = also; i < felso; i++) {
  26.         for (int j = i + 1; j <= felso; j++) {
  27.             if (baratsagos(i, j)) {
  28.                 printf("(%d,%d)\n", i, j);
  29.             }
  30.         }
  31.     }
  32.  
  33.     return 0;
  34. }
  35.  
  36. void int_beolvas(int* x) {
  37.     // 1 db integer ertek ellenorzott beolvasasa
  38.  
  39.     printf("szám: ");
  40.     scanf("%d", x);
  41. }
  42.  
  43. int baratsagos(int a, int b) {
  44.     // egy szamparrol annak megallapitasa, hogy baratsagos-e
  45.     return kisebboszto_osszeg(a) == b && kisebboszto_osszeg(b) == a;
  46. }
  47.  
  48. int kisebboszto_osszeg(int szam) {
  49.     // egy szamnak a nala kisebb osztoi osszegenek kiszamitasa
  50.     if (szam - also < 10000 && gyorsitotar[szam - also] != 0) {
  51.         return gyorsitotar[szam - also];
  52.     }
  53.  
  54.     int eredmeny = 0;
  55.  
  56.     for (int i = 1; i < szam; i++) {
  57.         if (szam % i == 0) {
  58.             eredmeny += i;
  59.         }
  60.     }
  61.        
  62.     if (szam - also < 10000) {
  63.         gyorsitotar[szam - also] = eredmeny;
  64.     }
  65.  
  66.     return eredmeny;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment