s=(int)sqrt(n)的意思就是对n开平方后取整。 这样做是为了提高计算效率,因为如果一个数不是质数的话,对它做因式分解,至少有一个因子是小于或者等于它的开方取整的,如果在小于或等于n的开方取整中没有找到它的因子,那么就可以判断n是质数。相关推荐 1s=(int)sqrt(n)是什么意思原来的程序是这样子的: #...
int(N)是将N强制转换成int类型,sqrt(n)是平方根函数,int(sqrt(n))是先对n进行平方运算,然后再将运算结果强制转换成int类型
把n开平方,然后取整。如int(sqrt(5))=2
sqrt是math.h里的一个库函数,是计算开平方的,因为开平方后得到的值可能是浮点型数据所以就进行一个强制转化,转化为int型(整形)
sqrt(n)就是根号n,根号3是1.732,但是k是int型,会切掉小数点后面的部分,是切掉,不是四舍五入,所以是1
sqrt是一个函数 作用是开平方 返回值是double
n`不是素数,返回`0`;否则,当循环完成且没有找到因子时,说明`n`是素数,返回`1`。综上所述,`if(i(int)sqrt(n))`前的循环会在`n`为素数时执行`i`直到找到一个因子或到达`sqrt(n)`。这一过程确保了在检测到`n`不是素数时,`i`会被`break`打断,从而正确地执行后续的逻辑判断。
int n就是定义一个一个整型的变量,n=是赋值。(int)是强制类型转换,也就是把后面Math.sqrt(i)得到的结果转换成整型,而且是强制取整的方法,不会四舍五入。Math.sqrt(i)就是调用Math函数库里的sqrt()方法,对i进行处理,具体就是对i开方, i=2时也就是根号2=1.414,整句读起来就是对i...
k=(int)sqrt((double)n); //提高效率 if (n<2) //2以下不能是素数 return 0; for(i=2;i<=k;i++) { if(n%i==0) return 0; } return 1;} 你少了 k=(int)sqrt((double)n);当然不能得到结果,它是循环的结束条件 追问:不定义变量k,直接用n来当结束条件呢 追答:这个也可以...