input: integer 'number' >= 0 returns the smallest prime number factor of 'number' >>> smallest_prime_factor(0) 0 >>> smallest_prime_factor(8) 2 >>> smallest_prime_factor(287) 7 >>> smallest_prime_factor(-1) Traceback (most recent call last): ...
(number)
| 275 | |
| 276 | |
| 277 | def smallest_prime_factor(number): |
| 278 | """ |
| 279 | input: integer 'number' >= 0 |
| 280 | returns the smallest prime number factor of 'number' |
| 281 | |
| 282 | >>> smallest_prime_factor(0) |
| 283 | 0 |
| 284 | >>> smallest_prime_factor(8) |
| 285 | 2 |
| 286 | >>> smallest_prime_factor(287) |
| 287 | 7 |
| 288 | >>> smallest_prime_factor(-1) |
| 289 | Traceback (most recent call last): |
| 290 | ... |
| 291 | AssertionError: 'number' must been an int and >= 0 |
| 292 | >>> smallest_prime_factor("test") |
| 293 | Traceback (most recent call last): |
| 294 | ... |
| 295 | AssertionError: 'number' must been an int and >= 0 |
| 296 | """ |
| 297 | |
| 298 | # precondition |
| 299 | assert isinstance(number, int) and (number >= 0), ( |
| 300 | "'number' must been an int and >= 0" |
| 301 | ) |
| 302 | |
| 303 | ans = 0 |
| 304 | |
| 305 | # prime factorization of 'number' |
| 306 | prime_factors = prime_factorization(number) |
| 307 | |
| 308 | ans = min(prime_factors) |
| 309 | |
| 310 | # precondition |
| 311 | assert isinstance(ans, int), "'ans' must been from type int" |
| 312 | |
| 313 | return ans |
| 314 | |
| 315 | |
| 316 | # ---------------------- |
nothing calls this directly
no test coverage detected