Advertisement
karbaev

perfect-numbers

Oct 10th, 2015
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. //Для вычисления совершенных чисел (число равно сумме всех своих делителей) используются числа Мерсенна
  2. //Простое число Мерсенна (англ. Mersenne prime) — простое число вида M_n = 2^n - 1, где n – натуральное число.
  3. //Каждое чётное совершенное число имеет вид \tfrac{M_p(M_p+1)}{2}=2^{p-1}(2^p - 1), где число Мерсенна M_p является простым (доказано Эйлером).
  4. //Все чётные совершенные числа (кроме 6) являются суммой кубов последовательных нечётных натуральных чисел: (1^3+3^3+5^3+\ldots).
  5.  
  6. #include <stdio.h>
  7. #include <math.h>
  8.  
  9. int main()
  10. {
  11.     int mas[8]={2, 3, 5, 7, 13, 17, 19, 31}; //первые 8 чисел Мерсена
  12.     long M, N, temp;
  13.     int fl=1, i, fl1=0;
  14. //    freopen("input.txt","r",stdin);
  15. //    freopen("output.txt","w",stdout);
  16.     scanf("%ld%ld", &M, &N);
  17.     for(i=0; i<8 && fl; i++)
  18.     {
  19.         temp=long(pow((double)2,(double) mas[i]-1)*(pow((double)2,(double)mas[i])-1));
  20.         if(temp>=M && temp<=N)
  21.         {
  22.             printf("%ld\n", temp);
  23.        
  24.             fl1=1;
  25.         }
  26.         if(temp>N)
  27.             fl=0;
  28.     }
  29.     if(!fl1){printf("Absent");}
  30.   return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement