python基础100题第十二题

题目:

判断 101-500 之间有多少个素数, 并输出所有素数。

数学知识普及:


质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,
换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;
而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。


程序分析:


判断素数的方法: 用一个数分别去除 2 到 (这个数), 如果能被整除,
则表明此数不是素数, 反之是素数。

代码:(判断一个数是否为素数)

print('-'*15 + "先判断这个数是否为素数" + '-'*15)
n = int(input("请您输入一个数(n>2):"))
c = []
for i in range(2, n):
    if n % i == 0:
        a = '是合数'
    else:
        a = '是素数'
    c.append(a)
#因为n除以前面的每个数 只要一个满足条件就可判断是合数,否则是素数

if '是合数' in c:
    print(n, '是合数')
else:
    print(n, '是素数')

代码:(判断一个数是否为素数,版2)

print('-'*15 + "先判断这个数是否为素数" + '-'*15)
n = int(input("请您输入一个数(n>2):"))

for i in range(2, n):
    if n % i == 0:
        break
else:
    print(n, '素数')

代码:(判断一个数是否为素数,版3)

print('-'*15 + "先判断这个数是否为素数" + '-'*15)
n = int(input("请您输入一个数(n>2):"))
a = 2
while a < n:
    if n % a == 0:
        break
    else:
        a += 1
    if a == n:
        print(n, '素数')

代码:(101-500 之间有多少个素数,版本一)

b =[]
for i in range(101, 501):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        b.append(i)
        #print(i, '素数')
print(len(b))

代码:(101-500 之间有多少个素数,版本二)

b = []
for i in range(101, 501):
    a = 2
    while a < i:
        if i % a == 0:
            break
        else:
            a += 1
        if a == i:
            b.append(i)
print(len(b))

结果:

70

Process finished with exit code 0

全部代码:(自行对比)

#程序12
'''
题目:
判断 101-200 之间有多少个素数, 并输出所有素数。

数学知识普及:
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,
换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;
而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
程序分析:
判断素数的方法: 用一个数分别去除 2 到 (这个数), 如果能被整除,
则表明此数不是素数, 反之是素数。
'''

'''
#判断一个数是否为素数 版本1
print('-'*15 + "先判断这个数是否为素数" + '-'*15)
n = int(input("请您输入一个数(n>2):"))
c = []
for i in range(2, n):
    if n % i == 0:
        a = '是合数'
    else:
        a = '是素数'
    c.append(a)
#因为n除以前面的每个数 只要一个满足条件就可判断是合数,否则是素数

if '是合数' in c:
    print(n, '是合数')
else:
    print(n, '是素数')

print('-'*15 + "判断101-500以内有多少个素数" + '-'*15)
'''

'''
#版本二
print('-'*15 + "先判断这个数是否为素数" + '-'*15)
n = int(input("请您输入一个数(n>2):"))

for i in range(2, n):
    if n % i == 0:
        break
else:
    print(n, '素数')

'''

'''
#版本三
print('-'*15 + "先判断这个数是否为素数" + '-'*15)
n = int(input("请您输入一个数(n>2):"))
a = 2
while a < n:
    if n % a == 0:
        break
    else:
        a += 1
    if a == n:
        print(n, '素数')
'''

'''
#素数个数
b =[]
for i in range(101, 501):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        b.append(i)
        #print(i, '素数')
print(len(b))
'''

'''
#版本二
b = []
for i in range(101, 501):
    a = 2
    while a < i:
        if i % a == 0:
            break
        else:
            a += 1
        if a == i:
            b.append(i)
print(len(b))
'''




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值