65 lines
1.1 KiB
Python
65 lines
1.1 KiB
Python
# Python Program to evaluate
|
|
# Mobius def M(N) = 1 if N = 1
|
|
# M(N) = 0 if any prime factor
|
|
# of N is contained twice
|
|
# M(N) = (-1)^(no of distinct
|
|
# prime factors)
|
|
import math
|
|
|
|
# def to check if n
|
|
# is prime or not
|
|
def isPrime(n) :
|
|
|
|
if (n < 2) :
|
|
return False
|
|
for i in range(2, n + 1) :
|
|
if (n % i == 0) :
|
|
return False
|
|
i = i * i
|
|
return True
|
|
|
|
def mobius(n) :
|
|
|
|
p = 0
|
|
|
|
# Handling 2 separately
|
|
if (n % 2 == 0) :
|
|
|
|
n = int(n / 2)
|
|
p = p + 1
|
|
|
|
# If 2^2 also
|
|
# divides N
|
|
if (n % 2 == 0) :
|
|
return 0
|
|
|
|
|
|
# Check for all
|
|
# other prime factors
|
|
for i in range(3, int(math.sqrt(n)) + 1) :
|
|
|
|
# If i divides n
|
|
if (n % i == 0) :
|
|
|
|
n = int(n / i)
|
|
p = p + 1
|
|
|
|
# If i^2 also
|
|
# divides N
|
|
if (n % i == 0) :
|
|
return 0
|
|
i = i + 2
|
|
|
|
if(p % 2 == 0) :
|
|
return -1
|
|
else :
|
|
return 1
|
|
|
|
# Driver Code
|
|
print("Mobius numbers from 1..99:")
|
|
|
|
for i in range(1, 100):
|
|
print(f"{mobius(i):>4}", end = '')
|
|
# This code is contributed by
|
|
# Manish Shaw(manishshaw1)
|