欧几里得-欧拉定理

根据 欧几里得-欧拉定理 A. 完全数 它是均匀的,可以用形式来表示 (2^n - 1)*(2^n / 2) ))      其中n是一个素数 2^n - 1      是一个 梅森素数 数字它是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
喜欢就支持一下吧
点赞12 分享