找出前N个素数

定义:质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
1. 判断一个数是否是质数

import math


def isPrime(n):
    if n<=1:
        return False
    for i in range(2, int(math.sqrt(n))+1):
        if n%i==0:
             return False
    return True


2. 找出前n个素数

def nPrime(n):
    xPrime=[]
    for x in xrange(2,1000):
        if isPrime(x):
            xPrime.append(x)
        if n==len(xPrime):
            break
     return xPrime
 


3.直接找出前n个素数
def xprime(N):
	prime=[]	
	for x in xrange(2,1000):
		if 0 not in[x%d for d in xrange(2,int(sqrt(x)+1))]:
			prime.append(x)
		if N==len(prime):
			break			
	return prime

这个方法存在bug,如何在大于2以上的范围里直接找素数,而不是(2,1000)的范围?不知道有没有好的方法。-----------看到修改此处
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个用C编程找出1000个素数存放到数组中,并输出第N个素数的值的例子: ```c #include <stdio.h> int main() { int primes[1000] = {2}; // 存放1000个素数的数组 int count = 1; // 当已经找到的素数个数 int n, i, j, is_prime; // n为输入的整数,i和j为循环计数器,is_prime为判断素数的标志 // 找出1000个素数 for (i = 3; count < 1000; i += 2) { // 从3开始每次增加2,因为偶数不可能是素数 is_prime = 1; for (j = 0; j < count; j++) { if (i % primes[j] == 0) { // 如果i能被primes[j]整除,说明i不是素数 is_prime = 0; break; } } if (is_prime) { // 如果i是素数,加入primes数组中 primes[count] = i; count++; } } // 输入整数N,输出第N个素数的值 printf("请输入一个正整数N(1 ≤ N ≤ 1000):"); scanf("%d", &n); if (n < 1 || n > 1000) { // 如果输入的整数不在1~1000的范围内,输出错误信息 printf("输入的整数不在1~1000的范围内!"); } else { printf("第%d个素数是:%d", n, primes[n-1]); // 第N个素数的下标是N-1 } return 0; } ``` 这个程序的基本思路是:先找出1000个素数,然后根据输入的整数n输出第n个素数的值。在找素数的过程中,我们用一个数组primes来存放已经找到的素数,并用一个变量count来记录当已经找到的素数个数。在每一次循环中,我们判断当的数i是否是素数,如果是就将其加入到primes数组中,并将count加1。最后,根据输入的整数n输出第n个素数的值,注意第n个素数的下标是n-1。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值