本题要求输出2
到n
之间的全部素数,每行输出10
个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
输入格式:
输入在一行中给出一个长整型范围内的整数。
输出格式:
输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。
输入样例:
10
输出样例:
2 3 5 7
代码(Python):
n=int(input()) #先输入n,因为input输入的是字符串,所以需要强制转换成int类型
x=0 #用来记录输出的素数个数
if n==2: #特殊情况:输入的n等于2(因为下面的循环是需要判断n是否能整除2~n-1之间的数,如果将2放入下面循环,由于它能整除2,所以会被判定为非素数而导致出错
print("%6d"%n,end='') #注意输出格式,%6d表示每个数占6位数,end=''表示结尾不回车
elif n>2: #一般情况
for i in range(2,n): #开始判断2~n(不包括n)之间的每个数
j=2 #先令每个数除以2
while i%j!=0: #如果除以j不为0,进入循环,j一直加1,直到退出循环
j+=1
if j==i: #判断退出上面while循环的原因,如果是j等于i,说明该数一直加到本身都没有遇到能整除的数
if x!=0 and x%10==0: #看它是该行输出的第几个数,以判断要不要换行:x等于0的话表示它是输出的第一个数,不用换行:x取余10等于0的话,表示输出的数是10的倍数,要换行
x+=1 #每输出一个数,x加一
print() #由于输出的数是10的倍数,表示该行输出了10个数,要换行(print默认会换行)
print("%6d"%i,end='') #按格式输出素数
else: #否则不是上面两种情况,表示该行数未满10个,则不需要换行,正常输出
x+=1 #每输出一个数,x加一
print("%6d"%i,end='') #按格式输出素数
上面的程序给出了比较详细的注释,以便新手小白参考。程序的思路设计并不是最优的,是“笨办法”,欢迎各位大佬指正错误或者给出更优质的思路。
我是一只想成为鲲鹏的菜鸟,大家的鼓励是我前进的动力,欢迎大家点赞收藏评论哦!