前一段时间领导出了一道算法题(找出一个数的平方根,精确到小数点后两位,不使用函数库),对此一直耿耿于怀,始终觉得自己的答案是有问题的,但是暂时没有想到其他好的办法。
我是先求出最接近这个数的一个能够整除的平方根,比如说1的平方根是1,2的最接近的平方根也是1,3的最接近平方根也是1,而5的最接近的平方跟是2,那么以2为基数,每次叠加0.01,加入说root是平方根,那么找出root 乘以root,然后乘积比该数大0.001的数。具体算法见以下代码:
import java.math.BigDecimal; import java.math.RoundingMode; /** * 找出一个数的平方根,精确到小数点后两位,不使用函数库. * * @author qinge * */ public class Square { public static void main(String[] args) { for (int num = 1; num <= 1000; num++) { System.out.print(num + "的函数平方根:" + Math.sqrt(num)); double root = findSmallRoot(num); System.out.print(" 小数点前一位是:" + root); while (true) { double product = root * root; if (product == num) { System.out.print(" 计算得出平方根是:" + root + "\n"); break; } else if (product > num) {// 此处算法有遗漏 if (product - num > 0.001) { System.out.print(" 计算得出平方根是:" + root + "\n"); break; } } // 用加0.01进行控制 root = root + 0.01; // 对double类型进行精度控制 root = BigDecimal.valueOf(root).setScale(2, RoundingMode.HALF_UP).doubleValue(); } } } /** * 找出num的平方根的小数点前面的数字 * * @param num * @return */ public static int findSmallRoot(int num) { // 遍历平方根的基数,基数的乘机必然会小于等于num for (int i = 1; i <= num && i * i <= num; i++) { // 找出基数则返回 if (i * i == num) { return i; } } // 找num-1 return findSmallRoot(num - 1); } }
相信一些大牛们一定有自己更神奇的算法,那么就贴出来吧!学习膜拜中...
相关推荐
例如,如果有一个 3×2 的矩阵 A,使用 repmat(A, 2, 3) 将返回一个 6×6 的矩阵,其中每个元素都是原来的 A 对应位置的元素。 二、数学计算函数 1. sqrt 函数:sqrt 函数用于求平方根。例如,如果要求 x 的平方根...
1. Abs函数:返回一个数的绝对值。 2. Array函数:创建一个数组。 3. Asc函数:返回代表字符的ASCII值。 4. Atn函数:返回一个数的反正切值。 5. CallByName函数:调用对象的方法或设置/返回一个对象的属性值。 6. ...
在C/C++编程语言中,函数是代码组织的基本单元,它们允许我们将一组特定任务封装到一个可重用的模块中。C/C++函数大全通常包括了各种标准库提供的函数,这些函数涵盖了输入/输出、数学运算、字符串处理、内存管理等...
* memchr函数:查找buf的前count个字节中c的第一次出现,当找到c或已检查完count个字节时停止。 * memcpy函数:从src拷贝count个字节到dest。如果源缓冲区和目的缓冲区重叠,这个函数不能保证正确拷贝。 * _memicmp...
4. 内存管理函数:`malloc`用于动态分配内存,`calloc`一次性分配多个零初始化的内存块,`realloc`调整已分配内存的大小,`free`则用于释放不再使用的内存。 5. 文件操作函数:`fopen`打开文件,`fclose`关闭文件,...
`aspell_new` 函数用于创建一个新的拼写检查对象,这是使用aspell拼写检查库前的必要步骤。 ### 8. base64_decode: BASE64解码 `base64_decode` 函数用于将BASE64编码的字符串解码回原始格式,常用于加密传输后的...
- `pow()`:用于计算一个数的幂次。 - `sqrt()`:用于求平方根。 3. 字符处理函数: - `getchar()`:从标准输入读取一个字符。 - `putchar()`:将一个字符写入标准输出。 - `isalpha()`, `isdigit()`:检查...
"C函数大全"是一个集合了C语言中所有标准库函数的参考资料,对于学习和使用C语言的人来说,这是一个不可或缺的工具。下面,我们将深入探讨C语言中的主要函数类别及其功能。 1. 输入/输出函数: - `printf` 和 `...
函数库是预先编写好的一组函数集合,方便程序员在开发过程中复用这些已验证过的功能。本资料主要涵盖C语言中的常用函数,特别是与处理文本文件(如TXT文档)相关的函数。下面将详细介绍这些知识点。 1. **标准输入...
本资源“C语言函数大全.rar”是一个集合了C语言中常见函数的参考资料,对于想要深入学习C语言的初学者来说,是一个非常有价值的资源。 在C语言中,函数是代码组织的基本单元,它封装了一段具有特定功能的代码,可以...
4. 数学运算函数:在`<math.h>`库中,有`sqrt`求平方根,`pow`进行指数运算,`sin`, `cos`, `tan`进行三角函数计算,`fabs`求绝对值等。这些函数扩展了C语言的算术运算能力。 5. 内存管理函数:`malloc`动态分配...
总结来说,创建一个“不导入任何函数”的程序是一项挑战性的任务,它要求程序员深入理解计算机系统的工作原理,自行实现各种功能,并且对内存管理和操作系统接口有深入的了解。这样的程序虽然可能更小、更独立,但也...
"C语言函数详解大全"是一个针对C语言函数的全面参考资料,它包含了C语言开发过程中可能用到的所有函数,每个函数都有详尽的功能解释、使用方法以及示例代码,是学习和查阅C语言函数的宝贵资源。 C语言中的函数是...
4. **数学运算**:头文件中的函数,如sqrt()计算平方根,pow()求幂,sin()、cos()和tan()进行三角函数运算,log()和exp()进行对数和指数运算。 5. **错误处理**:头文件中的errno变量和perror()函数,用于处理运行...
《C语言常用函数速查工具》是一款为C语言开发者量身打造的实用工具,它集成了C语言中常用的函数,并提供了快速检索和详尽的使用说明。这款工具旨在帮助程序员在编写代码时能够迅速找到所需的函数,提高开发效率,...
SQL函数是数据库管理中不可或缺的一部分,它们用于处理和操作从表中检索出来的数据,以满足各种分析和展示需求。在SQL中,函数可以分为多种类别,每种都有特定的作用和功能。 1. 聚合函数:这类函数如COUNT、SUM、...
3. 数学函数:`sqrt()` 用于求平方根,`pow()` 实现指数运算,`sin()` 和 `cos()` 分别计算正弦和余弦值,`rand()` 生成随机数。 4. 内存管理函数:`malloc()` 和 `calloc()` 用于动态分配内存,`realloc()` 可以...
7. `MsgBox(msg, [type])`:显示一个带有消息的对话框。 **文件操作函数**: 1. `Open`语句:打开文件,指定文件访问方式、存取类型、锁定状态等。 2. `Close`语句:关闭已打开的文件。 3. `Write#`:向文件写入...
在C语言中,计算一个数x的平方根是一项常见的数学操作,这通常涉及到浮点数运算和数值近似算法。本篇文章将详细讲解如何在C语言中实现这一功能,并探讨几种不同的方法。 首先,C语言提供了标准库math.h,其中包含了...