根据 欧几里得-欧拉定理 A. 完全数 它是均匀的,可以用形式来表示 其中n是一个素数
是一个 梅森素数 数字它是2的幂与梅森素数的乘积。这个定理建立了梅森素数和偶数之间的联系。
null
Some Examples (Perfect Numbers) which satisfy Euclid Euler Theorem are:6, 28, 496, 8128, 33550336, 8589869056, 137438691328Explanations:1) 6 is an even perfect number.So, is can be written in the form (22 - 1) * (2(2 - 1)) = 6where n = 2 is a prime number and 2^n - 1 = 3 is a Mersenne prime number.2) 28 is an even perfect number.So, is can be written in the form (23 - 1) * (2(3 - 1)) = 28where n = 3 is a prime number and 2^n - 1 = 7 is a Mersenne prime number.3) 496 is an even perfect number.So, is can be written in the form (25 - 1) * (2(5 - 1)) = 496where n = 5 is a prime number and 2^n - 1 = 31 is a Mersenne prime number.
接近( 蛮力 ): 取每个素数,用它构成一个梅森素数。梅森素数= 其中n是素数。现在形成数字(2^n-1)*(2^(n-1))并检查它是否均匀和完美。如果条件满足,则遵循欧几里得-欧拉定理。
C++
// CPP code to verify Euclid Euler Theorem #include <bits/stdc++.h> using namespace std; #define show(x) cout << #x << " = " << x << ""; bool isprime( long long n) { // check whether a number is prime or not for ( int i = 2; i * i <= n; i++) if (n % i == 0) return false ; return false ; } bool isperfect( long long n) // perfect numbers { // check is n is perfect sum of divisors // except the number itself = number long long s = -n; for ( long long i = 1; i * i <= n; i++) { // is i is a divisor of n if (n % i == 0) { long long factor1 = i, factor2 = n / i; s += factor1 + factor2; // here i*i == n if (factor1 == factor2) s -= i; } } return (n == s); } int main() { // storing powers of 2 to access in O(1) time vector< long long > power2(61); for ( int i = 0; i <= 60; i++) power2[i] = 1LL << i; // generation of first few numbers // satisfying Euclid Euler's theorem cout << "Generating first few numbers " "satisfying Euclid Euler's theorem" ; for ( long long i = 2; i <= 25; i++) { long long no = (power2[i] - 1) * (power2[i - 1]); if (isperfect(no) and (no % 2 == 0)) cout << "(2^" << i << " - 1) * (2^(" << i << " - 1)) = " << no << "" ; } return 0; } |
JAVA
// Java code to verify Euclid Euler Theorem class GFG { static boolean isprime( long n) { // check whether a number is prime or not for ( int i = 2 ; i * i <= n; i++) { if (n % i == 0 ) { return false ; } } return false ; } static boolean isperfect( long n) // perfect numbers { // check is n is perfect sum of divisors // except the number itself = number long s = -n; for ( long i = 1 ; i * i <= n; i++) { // is i is a divisor of n if (n % i == 0 ) { long factor1 = i, factor2 = n / i; s += factor1 + factor2; // here i*i == n if (factor1 == factor2) { s -= i; } } } return (n == s); } // Driver Code public static void main(String[] args) { // storing powers of 2 to access in O(1) time long power2[] = new long [ 61 ]; for ( int i = 0 ; i <= 60 ; i++) { power2[i] = 1L << i; } // generation of first few numbers // satisfying Euclid Euler's theorem System.out.print( "Generating first few numbers " + "satisfying Euclid Euler's theorem" ); for ( int i = 2 ; i <= 25 ; i++) { long no = (power2[i] - 1 ) * (power2[i - 1 ]); if (isperfect(no) && (no % 2 == 0 )) { System.out.print( "(2^" + i + " - 1) * (2^(" + i + " - 1)) = " + no + "" ); } } } } // This code is contributed by PrinciRaj1992 |
Python3
# Python3 code to verify Euclid Euler Theorem #define show(x) cout << #x << " = " << x << ""; def isprime(n): i = 2 # check whether a number is prime or not while (i * i < = n): if (n % i = = 0 ): return False ; i + = 1 return False ; def isperfect(n): # perfect numbers # check is n is perfect sum of divisors # except the number itself = number s = - n; i = 1 while (i * i < = n): # is i is a divisor of n if (n % i = = 0 ): factor1 = i factor2 = n / / i; s + = factor1 + factor2; # here i*i == n if (factor1 = = factor2): s - = i; i + = 1 return (n = = s); # Driver code if __name__ = = '__main__' : # storing powers of 2 to access in O(1) time power2 = [ 1 <<i for i in range ( 61 )] # generation of first few numbers # satisfying Euclid Euler's theorem print ( "Generating first few numbers satisfying Euclid Euler's theorem" ); for i in range ( 2 , 26 ): no = (power2[i] - 1 ) * (power2[i - 1 ]); if (isperfect(no) and (no % 2 = = 0 )): print ( "(2^{} - 1) * (2^({} - 1)) = {}" . format (i, i, no)) # This code is contributed by rutvik_56. |
C#
// C# code to verify Euclid Euler Theorem using System; using System.Collections.Generic; class GFG { static Boolean isprime( long n) { // check whether a number is prime or not for ( int i = 2; i * i <= n; i++) { if (n % i == 0) { return false ; } } return false ; } static Boolean isperfect( long n) // perfect numbers { // check is n is perfect sum of divisors // except the number itself = number long s = -n; for ( long i = 1; i * i <= n; i++) { // is i is a divisor of n if (n % i == 0) { long factor1 = i, factor2 = n / i; s += factor1 + factor2; // here i*i == n if (factor1 == factor2) { s -= i; } } } return (n == s); } // Driver Code public static void Main(String[] args) { // storing powers of 2 to access in O(1) time long []power2 = new long [61]; for ( int i = 0; i <= 60; i++) { power2[i] = 1L << i; } // generation of first few numbers // satisfying Euclid Euler's theorem Console.Write( "Generating first few numbers " + "satisfying Euclid Euler's theorem" ); for ( int i = 2; i <= 25; i++) { long no = (power2[i] - 1) * (power2[i - 1]); if (isperfect(no) && (no % 2 == 0)) { Console.Write( "(2^" + i + " - 1) * (2^(" + i + " - 1)) = " + no + "" ); } } } } // This code is contributed by Rajput-Ji |
PHP
<?php // PHP code to verify // Euclid Euler Theorem // define show(x) // cout << #x << " = " << x << ""; function isprime( $n ) { // check whether a number // is prime or not for ( $i = 2; $i * $i <= $n ; $i ++) if ( $n % $i == 0) return false; return false; } function isperfect( $n ) // perfect numbers { // check is n is perfect sum // of divisors except the // number itself = number $s = - $n ; for ( $i = 1; $i * $i <= $n ; $i ++) { // is i is a divisor of n if ( $n % $i == 0) { $factor1 = $i ; $factor2 = $n / $i ; $s += $factor1 + $factor2 ; // here i*i == n if ( $factor1 == $factor2 ) $s -= $i ; } } return ( $n == $s ); } // Driver code // storing powers of 2 to // access in O(1) time $power2 = array (); for ( $i = 0; $i <= 60; $i ++) $power2 [ $i ] = 1<< $i ; // generation of first few // numbers satisfying Euclid // Euler's theorem echo "Generating first few numbers " . "satisfying Euclid Euler's theorem" ; for ( $i = 2; $i <= 25; $i ++) { $no = ( $power2 [ $i ] - 1) * ( $power2 [ $i - 1]); if (isperfect( $no ) && ( $no % 2 == 0)) echo "(2^" . $i . " - 1) * (2^(" . $i . " - 1)) = " . $no . "" ; } // This code is contributed by mits ?> |
Javascript
<script> // JavaScript program to verify Euclid Euler Theorem function isprime(n) { // check whether a number is prime or not for (let i = 2; i * i <= n; i++) { if (n % i == 0) { return false ; } } return false ; } function isperfect(n) // perfect numbers { // check is n is perfect sum of divisors // except the number itself = number let s = -n; for (let i = 1; i * i <= n; i++) { // is i is a divisor of n if (n % i == 0) { let factor1 = i, factor2 = n / i; s += factor1 + factor2; // here i*i == n if (factor1 == factor2) { s -= i; } } } return (n == s); } // Driver code // storing powers of 2 to access in O(1) time let power2 = []; for (let i = 0; i <= 60; i++) { power2[i] = 1 << i; } // generation of first few numbers // satisfying Euclid Euler's theorem document.write( "Generating first few numbers " + "satisfying Euclid Euler's theorem" + "<br/>" ); for (let i = 2; i <= 25; i++) { let no = (power2[i] - 1) * (power2[i - 1]); if (isperfect(no) && (no % 2 == 0)) { document.write( "(2^" + i + " - 1) * (2^(" + i + " - 1)) = " + no + "<br/>" ); } } // This code is contributed by code_hunt. </script> |
输出:
Generating first few numbers satisfying Euclid Euler's theorem(2^2 - 1) * (2^(2 - 1)) = 6(2^3 - 1) * (2^(3 - 1)) = 28(2^5 - 1) * (2^(5 - 1)) = 496(2^7 - 1) * (2^(7 - 1)) = 8128(2^13 - 1) * (2^(13 - 1)) = 33550336(2^17 - 1) * (2^(17 - 1)) = 8589869056(2^19 - 1) * (2^(19 - 1)) = 137438691328
对上述示例的解释中提供了输出的解释。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END