python 从键盘任意输入一个正整数n,并找出大于n的最小素数,这个程序怎么写

这三个空格应该填什么代码?
import math
m=input('请输入一个正整数')
n=int(m) while True: n+=1 print(n)
f=True a=2 while___: if___: f=False
break a+=1
if f:
print('大于%s)的最小素数是%s'%(m,n))
____

import math
m=input('请输入一个正整数')
n=int(m)
while True: 
    n+=1  
    print(n)
    f=True  
    a=2  
    while a<=int(math.sqrt(n)):  
        if n%a==0:    
            f=False
            break    
        a+=1   
    if f: 
        print('大于%s)的最小素数是%s'%(m,n))
        break

My style:

import math

def is_prime(n):
    if n % 2 == 0:
        return False
    for i in range(3, math.sqrt(n)+2, 2):
        if n % i == 0:
            return False
    return True
    
def main():
    m = n = int(input('请输入一个正整数'))
    while True:
        n += 1
        if is_prime(n):
            print(f'大于{m}的最小素数是{n}')
            return
            
if __name__ == '__main__':
    main()

追问

程序还是运行不了

追答import math
m=input('请输入一个正整数:sdf')
n=int(m)
while True: 
    n+=1  
    print(n)
    f=True  
    a=2  
    while a<=int(math.sqrt(n)):  
        if n%a==0:    
            f=False
            break    
        a+=1   
    if f: 
        print('大于%s的最小素数是%s'%(m,n))
        break

import math
 
def is_prime(n):
    if n % 2 == 0:
        return False
    for i in range(3, int(math.sqrt(n))+2, 2):
        if n % i == 0:
            return False
    return True
     
def main():
    m = n = int(input('请输入一个正整数'))
    while True:
        n += 1
        if is_prime(n):
            print(f'大于{m}的最小素数是{n}')
            return
             
if __name__ == '__main__':
    main()

第一个是因为你把第15行中的英文%打成中文的%, 我直接复制了你的代码而报错。

第二个是因为第6行中没有把math.sqrt运算后的float转为int。(PS:第二个要python3.6以上版本才能运行)

所以,你不能只是照搬,要看懂程序、会调试啊。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-30
#include<stdio.h> void main() { int n,i,flag=0; scanf("%d",&n); while (n++) { for (i=2;i<=n;i++)//判断素数 if ((n)%i==0) break; if (n==i) { flag++; if (flag==3)//输出第三个素数并推出while循环 { printf("第三个素数:%d\n",n); break; } else n++; } } }