7-1 输出2到n之间的全部素数(PTA程序设计)

本题要求输出2n之间的全部素数,每行输出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='')  #按格式输出素数

上面的程序给出了比较详细的注释,以便新手小白参考。程序的思路设计并不是最优的,是“笨办法”,欢迎各位大佬指正错误或者给出更优质的思路。

我是一只想成为鲲鹏的菜鸟,大家的鼓励是我前进的动力,欢迎大家点赞收藏评论哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值