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