首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使我的for循环只打印一次,而不是为i的每个值打印

如何使我的for循环只打印一次,而不是为i的每个值打印
EN

Stack Overflow用户
提问于 2018-01-04 00:10:00
回答 3查看 374关注 0票数 0

我正在尝试创建一个函数来检查作为参数的给定数字是否为质数。我决定用一个for循环来做这件事,但它一直打印出这个数对于某些除数来说不是质数,而对于其他数来说它是质数。下面是我的代码:

代码语言:javascript
复制
def prime(n):
    for i in range(2, n):
        if n%i == 0:
            print (n," is not prime because it is divisible by ", i)

        else:
            print (n, " is a prime number")


prime (15)

这是输出:

代码语言:javascript
复制
15  is a prime number
15  is not prime because it is divisible by  3
15  is a prime number
15  is not prime because it is divisible by  5
15  is a prime number
15  is a prime number
15  is a prime number
15  is a prime number
15  is a prime number
15  is a prime number
15  is a prime number
15  is a prime number
15  is a prime number

因此,我不想把这个作为输出,而是立即认识到,如果这个数有除数1和它本身以外的除数,它就不是质数。如果数字不是这样的话。就像这样:

代码语言:javascript
复制
#if number if prime
15 is a prime number

#if number is not prime
15 is not a prime number because it is divisible by 3
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-04 00:57:26

通过returning,一旦识别出一个数字不是质数,该函数就会停止。

代码语言:javascript
复制
def prime(n):
    for i in range(2, n):
        if n%i == 0:
            print (n," is not prime because it is divisible by ", i)
            return 
    print (n, " is a prime number")
    return

这样做的好处是,一旦表达式n%i == 0的计算结果为真,它就会打印并返回,从而停止进一步的不必要的计算。

票数 2
EN

Stack Overflow用户

发布于 2018-01-04 00:12:18

尝尝这个

代码语言:javascript
复制
def prime(n):
    for i in range(2, n):
        if n%i == 0:
            print (n," is not prime because it is divisible by ", i)

prime (15)
票数 1
EN

Stack Overflow用户

发布于 2018-01-04 01:07:12

我会尝试这样的方法:

代码语言:javascript
复制
def prime(n): 
    isprime = True
    for i in range(2, n): 
         if n%i == 0:
              print (n," is not prime because it is divisible by ", i)
              isprime = False
              break
    if isprime:
         print (n, " is a prime number")
prime (15)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48081033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档