摘要:
第一个判定完全平方数函数:bool judge(int m){ double x = sqrt(m); if (floor(x) == x) { return true; } return false;}经过测试,表明这个函数对每个int范围内的正整数都能给出正确的判断当m是完全平方数时,m的算术平方根可以用double精确表示(因为是整数),所以不会产生精度损失,floor(x)==x成立当m不是完全平方数时,就要靠测试了,看看对于较大的k,double类型能否区分k2的平方根和k2+1的平方根,测试证明,k2在int范围内时,可以。第二个判定完全平方数... 阅读全文
posted @ 2013-02-01 17:24
ttang
阅读(2755)
评论(0)
推荐(0)
摘要:
本篇讨论判定一个long long类型的整数是否为完全平方数。long long类型的判定比较困难,因为(1)long long转换为double会损失精度,其实这个似乎不是大问题,因为转换成long double似乎就不会损失精度了(C语言没有明确规定long double的格式,在大多数实现中是IEEE754 extended format,80 bits,有64位有效数字)(2)对于较大的k,long double能否区分k^2和k^2+1的平方根,这决定着我们能否通过“判定一个数的平方根是否为整数”来判定这个数是不是完全平方数。long long i = 3037000499ll;// 阅读全文
posted @ 2013-02-01 17:24
ttang
阅读(1332)
评论(0)
推荐(0)
摘要:
本部分介绍相关背景知识1、C语言的char, short, int, long, long long类型都是由C自身规定的,但是float, double, long double都是没有规定的(unspecified),但大多数平台上的实现遵从IEEE754标准(参见http://en.wikipedia.org/wiki/C_data_types)(C99标准似乎规定了float对应IEC60559 single format,double对应IEC60559 double format,long double推荐实现为IEC60559extended format,参见C99标准文档44 阅读全文
posted @ 2013-02-01 17:23
ttang
阅读(655)
评论(0)
推荐(0)

浙公网安备 33010602011771号