【问题标题】:Finding sum of prime digits in python在python中查找素数的总和
【发布时间】:2020-12-28 06:56:36
【问题描述】:

所以我写了一个程序来计算一个数字中所有素数的总和。

#python program to print the sum of prime digits
number = int(input("Enter a number"))
n = number
number_of_digits = 0
is_prime = True
total = 0
while n>0:
    number_of_digits+=1
    n = int(n/10)
for i in range(1, number_of_digits+1):
    for j in range(2, int(number%10)):
        if int(int(number%10)%j)==0:
            is_prime = False
            break
    if is_prime == True:
        total = int(number%10)
    is_prime = True
    number = int(number/10)
print(total)

但它不起作用。这是一个逻辑错误,但我无法弄清楚。我在这里没有找到这个问题的答案,我不想看到解决方案,因为我想知道我的错误是什么。

【问题讨论】:

  • 糟糕,一个小错误。而不是 total = int(number%10) ,应该是 total += int(number%10)
  • 质数不是预先知道的吗——2、3、5、7?没有必要每次都根据第一原理重新计算一个数字是否是素数。

标签: python logic primes


【解决方案1】:

1 不是素数。您应该在

中考虑这一点
if int(int(number%10)%j)==0:

一个小错误: 总计 += int(number%10)

不要使用

if is_prime == True:

请使用

if is_prime:

让您的代码更加 Pythonic。

【讨论】:

    【解决方案2】:

    由于素数是预先知道的,因此更容易遍历数字的每个数字并添加素数数字

    number = input("Enter a number")
    prime_digits={'2','3','5','7'}
    sum_ = 0
    
    for digit in number:
        if digit in prime_digits:
            sum_+= int(digit)
    print('sum of prime digits: ',sum_)
    

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多