求最大的质数
文件夹中存储了20个整数,要求输出20跟整数当中的最大的质数我怎么改都改不对,求帮忙,哪里需要改进的
f=open(r"C:/y.txt", mode='r+')
a=f.read()
f.close()
d=a.split()
for i in range(1,len(d)+1):
c=a
for j in int(c):
if c%j==0:
if c<a:
break
else:
p=c
print(p)
冒泡试下哈 本帖最后由 Twilight6 于 2020-6-10 08:53 编辑
质数是除了本身和1以外没有能整除它的数,所以你遍历用 range 循环整除 2~你哪个数即可,因为range是包含左边不包含右边的,所以 遍历除法范围是 2~ 被除数-1
你如果单纯的读取文件,可以不用带 + 号,+号是读写模式了~ open 默认是以 r 只读模式 所以可以直接 open 即可
f=open(r"C:/y.txt")
第二个for 错误,整数不能进行迭代
for j in int(c)
还有 c = a 错误,我们切割后的列表 是 d而不是 a
完整代码:
f=open(r"C:/y.txt")
a=f.read()
f.close()
d=a.split()
prime = []
for i in range(1,len(d)):
c=int(d)
for j in range(2,c):
if c%j==0:
break
else:
prime.append(c)
print(max(prime))
你的第二个 for 循环里的 if 条件是正确的 第二个if 条件实际上没有意义了,因为你只需要整除一次说明这个数就不是质数了
然后你只有打印 一个 p ,而且大小判断条件那里出错了,反而达不到效果了~,你应该加入个列表,然后使用 max 方法直接求出最大质数
多处错误,帮你修改并注释了。f=open(r"C:/y.txt", mode='r+')
a=f.read()
f.close()
d=a.split()#切片后,还是字符串,d的每个对象对应一个数字
max_data=0
p=0
for i in range(len(d)):#应该从第一个开始遍历,这里下标弄错了
c=int(d)#c应该从d中取值
for j in range(2,c):#求质数,应该从2开始,应该用range
if c%j==0:
if c<int(d)-1:#这里应该是数值减1而不是下标减1
break
else:
p=c
if max_data>p:#找最大的值
max_data=p
print(max_data) 上面的方法好奇怪啊。。排个序,然后,从后向前遍历,找到第一个质数,不就行了 xiaosi4081 发表于 2020-6-10 08:08
冒泡试下哈
冒泡是什么?
可爱的菲菲酱 发表于 2020-6-10 11:09
冒泡是什么?
冒泡排序,依次比较两个相邻的元素,如果顺序错误那么就交换位置 赚小钱 发表于 2020-6-10 10:34
上面的方法好奇怪啊。。排个序,然后,从后向前遍历,找到第一个质数,不就行了
{:10_297:}用max 也 不奇怪吧.... Twilight6 发表于 2020-6-10 13:30
用max 也 不奇怪吧....
多做的大量的无用计算,完全是浪费计算资源。。。 赚小钱 发表于 2020-6-10 15:49
多做的大量的无用计算,完全是浪费计算资源。。。
哈哈 那确实蛤,那这样节省不少了吧:
f=open(r"C:/y.txt")
a=f.read()
f.close()
d=
d.sort(reverse=True)
for i in d:
c = int(i**0.5)
for j in range(2,c+1):
if i%j==0:
break
else:
print(i)
break
Twilight6 发表于 2020-6-10 16:28
哈哈 那确实蛤,那这样节省不少了吧:
②楼以下全部答错
看标题啊,最大质数,目前计算机界和数学界都不会有答案的 wp231957 发表于 2020-6-10 16:53
②楼以下全部答错
看标题啊,最大质数,目前计算机界和数学界都不会有答案的
哈哈你也看清楚是 文件中 20个整数其中最大的质数 Twilight6 发表于 2020-6-10 08:13
你如果单纯的读取文件,可以不用带 + 号,+号是读写模式了~ open 默认是以 r 只读模式 所以可以直接 op ...
大佬你无处不在{:10_298:} Future博弈 发表于 2020-6-10 17:13
大佬你无处不在
{:10_266:}
页:
[1]