Repository navigation
Expand file tree
/
Copy path5.py
More file actions
64 lines (52 loc) · 1.87 KB
/
Copy path5.py
File metadata and controls
64 lines (52 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import math
import time
import sys
def is_abundant(n):
start_time = time.time()
if n <= 0:
time_taken = time.time() - start_time
storage_used = sys.getsizeof(n)
return False, time_taken, storage_used
if n == 1:
time_taken = time.time() - start_time
storage_used = sys.getsizeof(n)
return False, time_taken, storage_used
sum_proper_divisors = 1
limit = math.isqrt(n)
for i in range(2, limit + 1):
if n % i == 0:
sum_proper_divisors += i
pair = n // i
if pair != i:
sum_proper_divisors += pair
if sum_proper_divisors > n:
time_taken = time.time() - start_time
storage_used = sys.getsizeof(n) + sys.getsizeof(sum_proper_divisors)
return True, time_taken, storage_used
time_taken = time.time() - start_time
storage_used = sys.getsizeof(n) + sys.getsizeof(sum_proper_divisors)
return sum_proper_divisors > n, time_taken, storage_used
def run_test(n):
result, time_taken, storage_used = is_abundant(n)
if result:
classification = "Abundant Number"
else:
# Check if perfect or deficient for better test output
s = 1
limit = math.isqrt(n)
for i in range(2, limit + 1):
if n % i == 0:
s += i
pair = n // i
if pair != i:
s += pair
classification = "Perfect Number" if s == n else "Deficient Number"
print("-" * 40)
print(f"Number: {n}")
print(f"Classification: {classification}")
print(f"Time Taken: {time_taken:.8f} seconds")
print(f"Storage Used: {storage_used} bytes")
run_test(12)
run_test(28)
run_test(18)
run_test(15)