应该是Math.sqrt()吧,是Math类的sqrt方法,就是求平方根,num是double类型的数,Math.sqrt()得到的是一个double类型的数,所以用(int)来将double类型的数转换成为int类型的数,不然就不能赋值给int型是limit。
int n就是定义一个一个整型的变量n =是赋值 (int)是强制类型转换,也就是把后面Math.sqrt(i)得到的结果转换成整型。而且是强制取整的方法,不会四舍五入。Math.sqrt(i)就是调用Math函数库里的sqrt()方法,对i进行处理。具体就是对i开方,i=2时也就是根号2=1.414 整句读起来就是对i开方,...
把num的平方根赋给limit这变量 根据变量名猜测可能是要做平方所以设了个上限。比如为了测试一个数是不是素数,则可以把待测数用从2开始的数去除,除到根号待测数为止即可。
int n就是定义一个一个整型的变量n =是赋值 (int)是强制类型转换,也就是把后面Math.sqrt(i)得到的结果转换成整型。而且是强制取整的方法,不会四舍五入。 Math.sqrt(i)就是调用Math函数库里的sqrt()方法,对i进行处理。具体就是对i开方, i=2时也就是根号2=1.414 整句读起来就是对i开方,结果取整后,赋...
i在左闭右开区间[2,int(math.sqrt(n))+1)内的整数遍历 2是区间的下限
for(i=2;i<=(int)sqrt(n);i++)sqrt是math.h里的一个库函数,是计算开平方的,因为开平方后得到的值可能是浮点型数据所以就进行一个强制转化,转化为int型(整形)
把I 强制转换成 double型 然后开方 ,把开方的结果 强制转换成int 型的 最后把这个值赋值给 n
s=(int)sqrt(n)的意思就是对n开平方后取整。 这样做是为了提高计算效率,因为如果一个数不是质数的话,对它做因式分解,至少有一个因子是小于或者等于它的开方取整的,如果在小于或等于n的开方取整中没有找到它的因子,那么就可以判断n是质数。相关推荐 1s=(int)sqrt(n)是什么意思原来的程序是这样子的: #...
提高效率 判断能不能整除 其实就相当于A*B==N? 如果A从2开始+1 B肯定是慢慢变小, 最后其实只要算到A=B就可以了 当A>B时 AB位置互换一下就好了 因此 当素数比较大的时候,这个效果还是比较明显的。
math.sqrt(x)是求x的平方根,输出结果数据类型为浮点数,也就是带小数,int把结果数据类型转换为整数,舍去小数点 0 回复 #1 sudoRam 提问者 不是,如果改成r=(math.sqrt(x)),运行就会得到结果:[1, 4, 9, 11, 14, 16, 17, 21, 22, 25, 27, 30, 33, 34, 35, 36, 39, 41, 42, 44, ...