1.判断完全平方数的方法
可以使用 (int)sqrt(i) * (int)sqrt(i) == i;也可以使用sqrt(i) - (int)sqrt(i) == 0;也可以sqrt(i) == (int)sqrt(i)来进行判断;
除了用sqrt外,还可以使用二分法查找一个数的整数,然后判断它是否是一个整数;可以使用floor和cell函数来比较一个数的平方根的上下取整,如果他们相等,那么这是一个完全平方数;可以使用一些数论的性质,比如一个完全平方数的末尾只能是0,1,4,5,6,9,或者一个完全平方数除以3或4的余数只能是0或1。
2.在使用sqrt函数时,会遇到多重函数重载的问题,原因是sqrt里的形参时浮点型,若输入整型实参时则会遇到这个问题。可以1.0*x或(float)x强制类型转换。
3.在判断素数时,可以使用sqrt()函数来降低时间复杂度。
for (i=2; i<sqrt(1.0*i)+1; i++)
4.将一个数的各个位数上的数字调用时,可以除10判断是否为零,然后对十求余,就将各个位数上的值输出了,需要注意的是,最高位时需要跳出while后进行输出,容易忘记。
while(n/10 != 0)
{
result = n%10;
n /= 10;
}
result = n%10;