C语言经典算法:兔子数列与素数判断

需积分: 0 2 下载量 175 浏览量 更新于2024-07-30 收藏 132KB DOC 举报
"这些是经典的C语言编程实例,包括了计算斐波那契数列、判断素数以及寻找水仙花数的算法。" 在计算机科学中,算法是解决问题的步骤或指令集,它们通常与特定编程语言相关联。在这个案例中,我们有三个C语言实现的经典算法: 1. **斐波那契数列**:这是一个数学上的数列,其中每个数是前两个数的和。在程序1中,它用于模拟兔子繁殖的问题。兔子的规律就是著名的斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21...。程序通过for循环计算前20个月兔子的数量,f1和f2变量分别表示当前月和上个月的兔子数量,每两月更新一次。 ```c for(i=1; i<=20; i++) { printf("%12ld%12ld", f1, f2); if(i%2==0) printf("\n"); /* 每行输出4个数 */ f1=f1+f2; /* 前两个月的兔子数加起来赋值给当前月 */ f2=f1+f2; /* 更新下个月的兔子数 */ } ``` 2. **素数判断**:程序2的目标是找出101到200之间的所有素数。素数是大于1且只有1和自身两个正因数的自然数。这里使用了一个内嵌的for循环来检查每个数是否为素数,通过判断该数能否被2到平方根之间的任何数整除。如果存在因子,则该数不是素数。 ```c 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. **水仙花数**:水仙花数是指一个三位数,其各位数字的立方和等于该数本身。在程序3中,使用for循环遍历100到999,通过提取每个数的个位、十位和百位,然后计算立方和进行验证。 ```c for(i=100; i<1000; i++) { j=i/100; /* 百位 */ k=(i/10)%10; /* 十位 */ n=i%10; /* 个位 */ if(j*j*j + k*k*k + n*n*n == i) printf("%d ", i); } ``` 这三个例子展示了基础的算法设计和C语言编程技巧,包括循环控制、条件判断、数学运算以及简单的输入输出操作。这些是学习编程时的基本功,对于理解计算机科学原理和提升编程能力非常有帮助。