一道python的题目,希望解释详细点。

图片说明

1处是a<=math.sqrt(n)
2处是n%a==0
3处是return

判断素数的条件是不能被除过1和它本身之外的数字整除,但是我们只需要判断到开方这个数字,之后会和前面重复的。
如果余数为0代表能整除,所以它就不是素数。
第三个是当找到这个素数就终止程序

#include
#include
int main()
{
int i,j,k;
int flag = 1; //是否为素数标志 1-非素数,0-素数
printf("请输入一个正整数:\n");
scanf("%d",&i);
if(i<2)
k=2;
else
{
while(1) //无限循环,找大于i的下一个素数
{
/*下面这个for循环判断大于i的下个正整数i+1的是不是素数*/
for(j=2; j<=sqrt(i+1); j++)
{
if(((i+1)%j)==0)
{
flag = 0; //不是素数的话flag置0
break;
}
}
if(flag == 1) //大于i的下一个正整数i+1是素数,找到,跳出
{
k=i+1;
break;
}
else
{
flag = 1;
i++;
}
}
}
printf("大于m的最小素数是%d",k);
return 0;
}
感觉和c语言差不多,你自己看着转化成Python吧,逻辑关系一样,语法不同而已

第1处答案是a<=math.sqrt(n),只要循环到n的平方根就可以了,多了会重复。
第2处答案是n%a==0能被整除就说明不是素数,直接break
第3处答案是return,判断结束return。

第一处,应该填的是,a<=math.sqrt(n)
第二处,应该填的是,n%a==0
第三处,应该填的是,return

素数指的是不能被1和它本身以外的数字整除,可是这里需要开方。当余数为0时,即可得出它不是素数。
return即是结束程序

1、a<=math.sqrt(n)
2、n%a==0
3、return

关键是怎么判断素数。这里用到的数学原理是如果一个数不能被不大于它的平方根的任意正整数整除,那这个数就是素数。其他都是一些简单的语法了。

1处 应该是a

1:a<n # 遍历小于n的所有值,如果可以整出就不是素数,接着下一个n
2: n/a==0 #这个语句证明不是素数
3:break #找到最小素数,退出while循环