Examples: >>> is_carmichael_number(4) False >>> is_carmichael_number(561) True >>> is_carmichael_number(562) False >>> is_carmichael_number(900) False >>> is_carmichael_number(1105) True >>> is_carmichael_number(8911) True >>> is_carmichael_nu
(n: int)
| 33 | |
| 34 | |
| 35 | def is_carmichael_number(n: int) -> bool: |
| 36 | """ |
| 37 | Examples: |
| 38 | >>> is_carmichael_number(4) |
| 39 | False |
| 40 | >>> is_carmichael_number(561) |
| 41 | True |
| 42 | >>> is_carmichael_number(562) |
| 43 | False |
| 44 | >>> is_carmichael_number(900) |
| 45 | False |
| 46 | >>> is_carmichael_number(1105) |
| 47 | True |
| 48 | >>> is_carmichael_number(8911) |
| 49 | True |
| 50 | >>> is_carmichael_number(5.1) |
| 51 | Traceback (most recent call last): |
| 52 | ... |
| 53 | ValueError: Number 5.1 must instead be a positive integer |
| 54 | |
| 55 | >>> is_carmichael_number(-7) |
| 56 | Traceback (most recent call last): |
| 57 | ... |
| 58 | ValueError: Number -7 must instead be a positive integer |
| 59 | |
| 60 | >>> is_carmichael_number(0) |
| 61 | Traceback (most recent call last): |
| 62 | ... |
| 63 | ValueError: Number 0 must instead be a positive integer |
| 64 | """ |
| 65 | |
| 66 | if n <= 0 or not isinstance(n, int): |
| 67 | msg = f"Number {n} must instead be a positive integer" |
| 68 | raise ValueError(msg) |
| 69 | |
| 70 | return all( |
| 71 | power(b, n - 1, n) == 1 |
| 72 | for b in range(2, n) |
| 73 | if greatest_common_divisor(b, n) == 1 |
| 74 | ) |
| 75 | |
| 76 | |
| 77 | if __name__ == "__main__": |
no test coverage detected