C语言经典算法解析:斐波那契数列与质数判断

需积分: 3 2 下载量 169 浏览量 更新于2024-10-04 收藏 22KB TXT 举报
"绝对经典的C语言算法" C语言是一门基础且强大的编程语言,它以其高效、灵活性和广泛的应用而闻名。本资源收集了100个C语言的经典算法,涵盖了数组、字符串处理、数学计算、逻辑判断等多个方面,旨在帮助初学者巩固基础知识并提升编程技能。 对于C语言算法的学习,以下是一些关键知识点: 1. **斐波那契数列**:斐波那契数列是计算机科学中常见的序列,定义为:第一项和第二项都是1,后续每一项都是前两项之和。在给定的代码中,展示了如何用循环结构计算斐波那契数列的前20项。这个例子演示了变量初始化、条件判断和循环控制的基本用法。 ```c // 斐波那契数列示例 main() { long f1, f2; int i; f1 = f2 = 1; for (i = 1; i <= 20; i++) { printf("%12ld%12ld", f1, f2); if (i % 2 == 0) printf("\n"); // 每两行换行 f1 = f1 + f2; // 更新当前项 f2 = f1 + f2; // 更新下一项 } } ``` 2. **素数判断**:素数是指除了1和自身以外没有其他正因数的自然数。在另一个例子中,程序遍历101到200之间的所有整数,通过检查每个数是否能被2到其平方根之间的任何数整除来判断是否为素数。如果一个数是素数,程序将其打印出来,并统计总数。这里展示了`sqrt()`函数的使用以及嵌套循环结构。 ```c // 素数判断示例 #include <math.h> main() { int m, i, k, h = 0, leap = 1; printf("\n"); for (m = 101; m <= 200; m++) { k = sqrt(m + 1); for (i = 2; i <= k; i++) if (m % i == 0) { leap = 0; break; } if (leap) { printf("%-4d", m); h++; if (h % 10 == 0) printf("\n"); } leap = 1; } printf("\nThe total is %d", h); } ``` 3. **水仙花数**:水仙花数是指一个三位数,其各位数字的立方和等于它本身。例如153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。为了找出100到999之间的所有水仙花数,我们可以遍历这个范围,逐个计算每个数的各位立方和,并进行比较。 ```c // 水仙花数示例 main() { int i, j, k, n; printf("waterflower numbers:\n"); for (i = 100; i <= 999; i++) { n = i; j = i / 100; k = (i % 100) / 10; if (i == j * j * j + k * k * k + (n % 10) * (n % 10) * (n % 10)) { printf("%d ", i); } } } ``` 以上代码展示了C语言算法的基本思想和实现技巧,包括循环控制、条件判断、算术运算、函数调用等。学习和理解这些算法将有助于深入理解C语言并提升编程能力。通过不断地练习和实践,可以更好地掌握C语言的精髓,为解决更复杂的编程问题打下坚实基础。