1、有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?
解题思路:从四个数中选择三个数进行排列,定义三层循环,每层循环依次代表数字的百位、十位、个位。组成的数不允许出现重复的数字,就判断百、十、个的数字是否出现相等的情况,出现,则跳过这个组合。具体代码如下:
number=[1,2,3,4] #定义数组,存放4个数字
count=0 #用于组合计数
N=[] #将数字的组合存放到N中
#定义三重循环,遍历所有组合情况
for i in number:
for j in number:
if i==j: #如果百位和十位数字重复,则跳过这种组合方式
continue
for k in number:
if i==k or j==k: #如果个位和十位或百位有相同情况出现,则跳过
continue
else:
count = count + 1 #组合个加1
N.append(i*100+j*10+k) #将组合添加到N列表中
print("能组成:",count,"个数字,分别是:")
#遍历列表,打印所有组合
for i in range(len(N)):
print(N[i],end=" ")
2、输入三个整数,将这三个数从小到大输出
解题思路:这个题较为简单,可以使用嵌套if else结构进行排序,但过程稍显复杂,最简单的方法是使用冒泡排序即可。代码如下:
a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
c=int(input("请输入第三个整数:"))
print("你输入的三个数为:",a,b,c)
num=[a,b,c] #将三个数存放到列表中,方便使用冒泡排序
for i in range(len(num)):
for j in range(i,len(num)):
if num[i]>num[j]:
temp=num[i]
num[i]=num[j]
num[j]=temp
print("从小到大排序后的顺序为:",num)
3、判断 101-200 之间有多少个素数,并输出所有素数。
解题思路:素数,即质数,指只有1和数字本身能被自身整除的数,例如2、3、5、7…。这题解题的重点在于如何判断一个数是不是质数。根据质数的定义,只需要将数n范围内的所有数与n进行取余,如果所有的余数都不为0,则表示这个数是一个质数。(余数不为0表示除不尽)但其实不需要重复这么多次取余,只需要确保2–n/2之间都没有能够除尽的数即可(数学知识)。
代码如下:
count = 0 #统计个数
num=[] #将所有素数存放到列表中
#遍历101-200之间所有的数字
for i in range(101,201):
t=True
for j in range(2,int(i/2)+1):
#一旦出现余数为0的情况,则说明这个数不是素数,直接结束循环
if i%j==0:
t=False
break
else:
pass
if t==True:
count = count +1
num.append(i)
print("101—200之间总的素数有:",count,"个")
print("分别是:",num)