python3用迭代器实现前n个素数的查找,Iterator

我们在判断一个数tempval是否是素数时,需要将其对0~tempval的数取模(%),这个过程可以用迭代器实现

原题:

Write an iterator that iterates over the first n prime numbers. Use this to print out the
first 10,000 primes.

 

def printfirstnprime(n):
    from collections import Iterator

    cout=0
    primelist=[]
    tempval=2

    while(cout!=n):
        it=iter([i for i in range(2,tempval)])
        while True:
            try:
                i=next(it)
                if(tempval%i==0):
                    tempval+=1
                    break
            except StopIteration:
                primelist.append(tempval)
                cout+=1
                tempval+=1
                break

    print(primelist)

def main():
    printfirstnprime(1000)


if __name__ == '__main__':
    main()

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用以下代码来实现在100内查找素数的程序: ``` def is_prime(n): if n <= 1: return False for i in range(2, n): if n % i == 0: return False return True for i in range(2, 101): if is_prime(i): print(i) ``` 这段代码首先定义了一个`is_prime`函数,该函数用于检查给定数字是否为素数。然后,它在2到101的范围内循环,并使用`is_prime`函数检查每个数字是否为素数。如果是素数,则输出该数字。 ### 回答2: 要用Python编写程序实现100以内的素数查找,可以使用以下代码: ```python def is_prime(n): if n < 2: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True primes = [] for num in range(2, 101): if is_prime(num): primes.append(num) print("100内的素数为:", primes) ``` 首先,我们定义了一个`is_prime()`函数来判断一个数是否为素数。如果给定的数小于2,则它不是素数,直接返回`False`。然后,我们遍历从2到sqrt(n)取整数加1之间的所有数,检查它们是否可以整除给定的数n。如果找到一个可以整除n的数,那么n就不是素数,返回`False`;如果遍历完整个范围后都没有找到可以整除n的数,那么n就是素数,返回`True`。 接下来,我们创建一个空列表`primes`来存储找到的素数。然后,我们遍历从2到100之间的所有数,调用`is_prime()`函数判断它们是否为素数。如果是素数,就将它添加到`primes`列表中。 最后,我们打印出找到的素数列表`primes`。 运行这段程序,就能得到100内的所有素数。输出结果为: ``` 100内的素数为: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] ``` 这就是使用Python编写查找100内素数的程序。 ### 回答3: 要用Python编写程序实现100以内的素数查找,可以按照以下步骤进行: 1. 定义一个函数 `is_prime(n)` ,用于判断一个数 `n` 是否为素数。 2. 在函数中,首先判断 `n` 是否小于等于1,如果是,则直接返回 `False`。 3. 然后,使用一个循环从 `2` 开始遍历到 `n` 的平方根(取整数部分加1)之间的所有数,判断是否能整除 `n`。如果存在一个能整除 `n` 的数,说明 `n` 不是素数,返回 `False`。 4. 如果循环结束后都没有找到能整除 `n` 的数,说明 `n` 是素数,返回 `True`。 5. 在主程序中,使用一个循环从 `2` 到 `100` 遍历所有的数,调用 `is_prime()` 函数判断是否为素数,如果是素数,则打印输出。 下面是相应的Python程序实现: ```python import math def is_prime(n): if n <= 1: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True for i in range(2, 101): if is_prime(i): print(i, end=' ') ``` 以上程序会输出100以内的素数,结果如下: ``` 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ``` 这些数都是100以内的素数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值