File tree 1 file changed +34
-14
lines changed
1 file changed +34
-14
lines changed Original file line number Diff line number Diff line change 1
1
import math
2
2
3
- def isPrime (n ):
4
- i = 2
5
- while i <= math .sqrt (n ):
6
- if n % i == 0 :
3
+ def isPrime (num ):
4
+ if num <= 3 :
5
+ return num > 1
6
+ if num % 2 == 0 :
7
+ return False
8
+ if num % 3 == 0 :
9
+ return False
10
+ i = 5
11
+ while i <= math .sqrt (num ):
12
+ if num % (i ) == 0 or num % (i + 2 ) == 0 :
7
13
return False
8
- i += 1
14
+ i += 6
9
15
return True
10
-
16
+
17
+ def isCoprime (a , b ):
18
+ return math .gcd (a , b ) == 1
19
+
11
20
def isCarmichael (n ):
12
21
if isPrime (n ):
13
22
return False
14
- for i in range (1 , n ):
15
- if i ** n % n == i :
16
- continue
17
- else :
18
- return False
23
+ if n % 2 == 0 :
24
+ for i in range (1 , n , 2 ):
25
+ if isCoprime (n , i ):
26
+ if i ** (n - 1 ) % n == 1 :
27
+ continue
28
+ else :
29
+ return False
30
+ else :
31
+ for i in range (1 , n ):
32
+ if isCoprime (n , i ):
33
+ if i ** (n - 1 ) % n == 1 :
34
+ continue
35
+ else :
36
+ return False
19
37
return True
20
38
21
39
def main ():
22
40
n = int (input ('Enter n: ' ))
23
41
count = - 1
24
- curr = 0
42
+ curr = 3
25
43
while count < n :
26
- curr += 1
44
+ curr += 2
27
45
if isCarmichael (curr ):
28
46
count += 1
29
47
print (curr )
30
48
31
- main ()
49
+ if __name__ == '__main__' :
50
+ main ()
51
+
You can’t perform that action at this time.
0 commit comments