|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我是迭代的n,为什么迭代的list呢 在list前加int也不行
help
- n = 31
- n = list(n).append(0, 3)
- for i in range(2, n):
- if (n % i) == 0:
- print(n, "不是质数")
- print(i, "乘以", n//i, "是", n)
- break
- else:
- print(n, "是质数")
复制代码
错误:
C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe C:/Users/Administrator/fab200(判断3..1是质数).py
Traceback (most recent call last):
File "C:/Users/Administrator/fab200(判断3..1是质数).py", line 2, in <module>
n = list(n).append(0, 3)
TypeError: 'int' object is not iterable
Process finished with exit code 1
本帖最后由 sunrise085 于 2019-1-18 23:06 编辑
数字是不能迭代的,所以list()中不能是数字(包括int和float)。
你要在31前面添加3,有很多种方法。
例如:num=int(str(num)[0]+str(num))
再者,你的程序只有一层循环,n也只在第二行修改过一次,也就只能判断一个数是否是质数。
我在你的程序的基础上帮你修改了一下。
- n='31'
- flag=True
- while flag:
- num=int(n)
- for i in range(2,int(num**0.5+1)):
- if num%i==0:
- print(n, "不是质数",end=' ')
- print(i, "乘以", num//i, "是", n)
- flag=False
- break
- else:
- print(n,"是质数")
- n=n[0]+n[:]
复制代码
下面是我写过的程序:
- def prime(num):
- flag=True
- for j in range(2,int(num**0.5)+1):
- if num%j == 0:
- flag=False
- break
- if flag:
- print("%d是质数" %num)
- else:
- print("%d不是质数" %num)
- return flag
- num=int(input("请输入一个两位整数:"))
- s=str(num)[0]
- while True:
- flag=prime(num)
- if flag:
- num=int(s+str(num))
- else:
- break
复制代码
还可以这样写:
- def iscom(num):
- for i in range(2,int(num**0.5+1)):
- if num % i != 0:
- continue
- else:
- return False
- print('%d是质数'% num)
- return True
- num=31
- n = 1
- m=num//10
- s=str(num)[0]#取num的最高位
- while 1:
- flag=iscom(num)
- if not flag:
- print('%d不是质数'% num)
- break
- n += 1
- num=(m*10**n)+num#num最高位前添加一位
复制代码
|
|