猫史档案馆


-质数搜寻-

用户:小苏打_小苏打_查看:0 回复:0 评论:0 创建时间:2020-11-15T10:10:21


#!/usr/bin/python
while True:
    inp=''
    inp=input('请选择模式:\n=>1:从零开始\n=>2:切片\n=>3:查询\n=>4:指定一个数目以开始,计算到若干指数为止\n  =>>')
    print('='*20)
    if inp=='1':
        
        a=0
        i=0
        b=0
        c=0
        d=[]
        a=input('please input a number..\n')
        a=int(a)
        for i in range(2,a):
            for b in range(2,round((i+2)/2)):
                if i%b==0:
                    c+=1
                    break
            if c==0:
                    d.append(str(i))
            c=0
            print(str(round((i/a)*100,3))+'%')
        print(d)
        print('\n1 ~ '+str(a)+' is have '+str(len(d))+' prime number.')

    elif inp=='2':
          
        a=0
        a2=0
        i=0
        b=0
        c=0
        d=[]
        a=input('please input a number..\n')
        a=int(a)
        a2=input('please input a number..\n')
        a2=int(a2)
        if a<2:
            print('error:number<mainnumber> is can not 喵all to 2')
            print('==>>:nainnumber=2')
            a=2
        for i in range(a,a2):
            for b in range(2,round((i+2)/2)):
                if i%b==0:
                    c+=1
                    break
            if c==0:
                    d.append(str(i))
            c=0
            print(str(round(((i-a)/(a2-a))*100,3))+'%')
        print(d)
        print('\n'+str(a)+' ~ '+str(a2)+' is have '+str(len(d))+' prime number.')

    elif inp=='3':
        x=input('number?:')
        yy=0
        c=0
        x=int(x)
        for yy in range(2,round((x+1)/2)):
            if x%yy==0:
                print('is not prime number.')
                c+=1
                inp_3_is_PN__=False
                break
            print(str(round(((yy*2)/x)*100,3))+'%')
        if c==0:
            print('is prime number!')
            inp_3_is_PN__=True
            
    elif inp=='4':
        a=0 #从...开始
        i=0 #for...number<x>
        b=0
        c=0
        d=[]
        a=input('从...开始\n')
        a=int(a)
        e=input('直到找到...个质数\n')
        e=int(e)
        i=a
        while not(len(d)==e):
            for b in range(2,i):
                if i%b==0:
                    c+=1
                    break
            if c==0:
                    d.append(str(i))
            c=0
            print(str(round((len(d)/e)*100,3))+'%')
            i+=1
        print(d)

    lastcommand=input('\n\nplease type \'Enter\' to next or input command ... \n =>>')
    if lastcommand=='':
        break
    elif lastcommand=='again':
        print('='*20)
        print('OK.')
        print('='*30)
        print('='*30)
    elif lastcommand=='save':
        saveas=input('save as[fineON=txt]...\n =>')
        input('WAMMING:SAVE AS THE FINE IS HAVE DEL FINE TEXT. next?')
        FINE=open(saveas,'w')
        if inp=='1':
            FINE.write('\n1 ~ '+str(a)+' is have '+str(len(d))+' prime number.\n')
            FINE.write('['+','.join(d)+']')
            FINE.close()
        if inp=='2':
            FINE.write('\n'+str(a)+' ~ '+str(a2)+' is have '+str(len(d))+' prime number.\n')
            FINE.write('['+','.join(d)+']')
            FINE.close()
        if inp=='3':
            if inp_3_is_PN__==True:
                FINE.write(str(x)+' is a prime number!')
            else:
                FINE.write(str(x)+' is not a prime number.')
            FINE.close()
        if inp=='4':
            FINE.write('从'+str(a)+'开始的'+str(e)+'个质数分别是:')
            FINE.write('['+','.join(d)+']')
            FINE.close()
        print('save is OK.')
        input('type\'enter\'to quit.')
        break
    else :
        print('No,I can not read your command.')
        break


回复

上一页1 页 / 共 0下一页