python函数求和素数,python求素数之和

python求1~100之间的所有素数之和

解题思路:需要实现两个函数,一个是判断数字是否是素数;一个是求和函数。

创新互联公司成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、成都app开发移动网站建设、微信网站制作、软件开发、绵阳电信机房等实行标准化操作,让客户可以直观的预知到从创新互联公司可以获得的服务效果。

实现函数,判断是否是素数,is_prime,具体代码如下:

def is_prime(num):

"""

判断是否是素数.

:param num:

:return:

"""

result = True

# 质数大于 1

if num 1:

  # 查看因子

  for i in range(2, num):

      if (num % i) == 0:

          result = False

          break

  else:

      result = True

# 如果输入的数字小于或等于 1,不是质数

else:

  result = False

return result

实现函数,计算数字start到end之间的所有素数之和,sum,具体代码如下:

def sum(start, end):

"""

求闭区间[start, end]之间的素数之和.

:param start:

:param end:

:return:    """

result = 0;

for i in range(start, end + 1):

  if is_prime(i):

      print(i)

      result = result + i

return result

在main函数中调用求和,代码如下:

if __name__ == '__main__':

num = 8

print(is_prime(num))

num = 5

print(is_prime(num))

print(sum(1, 5))

完整 代码如下:

python如何算质数和

你好的!

import math

def is_prime(n):  # 简化问题,先利用函数判断是否为质数

if n == 1:  # =是赋值,==才是判断,切记切记

return False

for i in range(2, int(math.sqrt(n))+1):  # 质数判断条件,注意+1

if n % i == 0:

return False

return True

primes = []

name = int(input())

for i in range(1, name):  # 注意这个逗号,很容易写错!

if is_prime(i) is True:  # bool值用is判断

primes.append(i)

print('100以内的素数:{}\n100以内素数和:{}'.format(primes, sum(primes)))

欢迎追加悬赏并采纳!

python求素数的个数

求素数本质上的算法还是:除了1和它本身之外的数都不能整除的数。

在网上看到了一种用一行就解决的代码:

" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])

对这段代码分解,最后一段列表生成式[y for y in range(2,x) if x%y == 0]这个就是核心算法y是从2到x-1的数,x只要能对y整除,配上前面的if not,就是,x不能被2到x-1的数整除,再看前面一段,x for x in range(2,100) 其实就是让x从2到100的取值。我们这假设题目就是求100内的素数。其实代码到这就得出结果了,只要在这些代码外面加上[]就是一个列表生成式了:

[x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0]]

那么为什么还加上了" ".join("%s" % 。。。)这段代码呢?其实只是格式化美观罢了,"%s" %是一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中,join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

下面是结果:

'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'

这样解析出来是个字符串还不能分割,所以我重新改了一下:

a = (" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])).split()

list1 = []

for item in (a):

list1.append(int(item))

print(list1)

split()把字符串解析成列表,然后给列表每一项都转化成数字。

在数学里,我们还有种判断素数的简化方法:即y的取值范围是2到x的平方根+1

import math

(" ".join("%s" % x for x in range(2,100) if not [y for y in range(2, int(math.sqrt(x))+1) if x%y == 0])).split()

下面是一种正常的算法:

import math

num = []

i = 2

for i in range(2,100):

j = 2;

for j in range(2,int(math.sqrt(i)+1)):

if (i%j==0):

break;

else:

num.append(i)

print(num)

python用while求100以内素数并求和

# 用while求100以内素数并求和

primes = []

n = 2

while n = 100:

i = 2

while i = int(n**(1/2)):

i += 1

if n % (i - 1) == 0:

break

else:

primes += [n]

n += 1

print(primes)

print(f'100以内素数之和为{sum(primes)}')

程序缩进如图所示

输出1000以内的素数及这些素数之和。用Python怎么做呀?

def prime(x):

for i in range(2,x):

if x%i==0:

return False

elif i==x-1:

return True

output=filter(prime,range(2,1001))#区分于map函数

output

b = list(output)

c = 0

for i in b:

c = c + i;

print(c)#我的是jupyter编译器,如需要展示素数直接print(b)


网站栏目:python函数求和素数,python求素数之和
本文链接:http://pwwzsj.com/article/phispo.html