这道c语言题,小弟有点不太理解,哪位高手给解读一下啊!!!

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:58:13
下面的函数是判断m是否为素数,若是,则返回1,否则返回0
#include <math.h>
int isprime(int m)
{
int i,k;
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1) return (1);
else return (0);

(m%i==0) 和 (i>=k+1)这两个条件是什么意思啊???

(m%i==0) 意味着m能被大于2小于k+1的数整除,(i>=k+1)意味着m不能被小于或等于k的数整除。例如:m=47,k=sqrt(m)=6,i=7,所以i>=k+1,因此47是素数

m%i==0表示m能被i整除,m不是素数
i>=k+1表示上面的for循环没有进入m%i==0这个条件,也即没有数能整除m,是素数

质数定义:除了1与自身,不能整除任何数。

(m%i==0)不能整除比自己小的数

i>=k+1 ;说明上面那个for循环一直执行了k次都没有break;说明m是质数,所以返回1.