检查给定的数是否为素数,若为素数,则求该数的阶乘,若不是素数,则打印该数的位数和

  • 本文关键字:打印 阶乘 是否 python
  • 更新时间 :
  • 英文 :


数字和运行良好,但为什么阶乘部分不起作用?我在if else或break上犯了什么错误吗?

NUM = int (input ("Enter a number "))
if NUM > 1:
for x in range (2, NUM):
if (NUM % x) == 0:  
temp = NUM
sod = 0
while temp > 0:
remainder = temp % 10  
sod += remainder
temp = temp//10
print (sod)
break
else:
factorial = 1
for I in range (1, NUM + 1,1):
factorial *= I
print (factorial)        
else:
temp = NUM
sod = 0
while temp > 0:
remainder = temp % 10  
sod += remainder
temp = temp//10
print (sod)

第12行的break语句在if语句之外,因此无论NUM的值如何,for循环都将在第一次传递后中断。你确定你不是想把break再缩进四个空格吗?

# example of factorial with prime numbers    
num = int(input("Enter a number"))
factorial = 1
if num%2 == 0:
for i in range(1, num + 1):
factorial = factorial*i
print("The factorial of ",num," is",factorial)

下面的代码检查数字是素数还是奇数。如果它是素数,它找到该数的阶乘,如果它是奇数,那么它求和该数的范围。希望这就是你想要的。

NUM = int(input("Enter number here"))
if NUM > 0:
if NUM % 2 == 0:
factorial = 1
for i in range(1, NUM +1):
factorial = factorial*i
print(factorial)
else:
sum_of_NUM = 0
for x in range(NUM+1):
sum_of_NUM += x
print(sum_of_NUM)
else:
print("something you want to put")