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

需积分: 5 1 下载量 125 浏览量 更新于2024-08-05 收藏 23KB TXT 举报
"C语言100个经典算法.txt 包含了100个C语言编程中的经典算法,涵盖不同难度和主题。文件部分内容展示了斐波那契数列的计算以及找出101到200之间的素数。此外,还有寻找特定形式的数字,如'waterflower'数(每个数字的立方和等于该数字)的实现。" 在C语言中,算法是解决问题或执行任务的步骤序列。这个文件提供了100个经典的C语言算法,这对于学习和提高C语言编程技巧非常有帮助。以下是其中三个示例算法的详细解释: 1. **斐波那契数列** 斐波那契数列是一个序列,其中每个数是前两个数的和,通常以0和1开始:0, 1, 1, 2, 3, 5, 8, 13, 21...。给出的代码段用C语言实现了斐波那契数列的打印,从1到20。`f1` 和 `f2` 分别初始化为斐波那契序列的前两个数1和1,然后在循环中通过累加更新这两个值。每两行输出一个换行符,使得输出更易读。 ```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. **素数查找** 该算法用于找出101到200之间的素数。素数是大于1且仅能被1和它自身整除的正整数。代码通过`sqrt()`函数计算每个数的平方根,并检查是否能被2到平方根之间的任何数整除。如果找到因子,则该数不是素数,否则输出素数。最后,程序统计并输出找到的素数总数。 ```c #include <math.h> main() { int m, i, k, h = 0, leap = 1; 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. **'waterflower'数** 'waterflower'数是指数字的立方和等于数字本身的三位数。例如,153是一个'waterflower'数,因为1^3 + 5^3 + 3^3 = 153。代码段用于找出100到999之间所有这样的数: ```c main() { int i, j, k, n; printf("'waterflower' number is:"); for (n = 100; n <= 999; n++) { i = n / 100; j = (n / 10) % 10; k = n % 10; if (i * i * i + j * j * j + k * k * k == n) printf("%d ", n); } } ``` 这100个经典算法覆盖了数据结构、排序、搜索、数学问题、字符串处理等多个领域,为C语言的学习者提供了丰富的实践材料。通过理解和实现这些算法,开发者可以提升编程技能,增强问题解决能力。