四、斐波那契数列:0、1、1、2、3、5、8、13.........该数列从第三项开始,第三项的值等于前两项的和,数列表达式是:a[n]=a[n-1]+a[n-2];
C语言实现方式如下;
#include<stdio.h>
int main()
{
int i,j,k1=0,k2=1,b;
printf("请输入想求的斐波拉数个数");
scanf("%d",&i);
for(j=0;j<i;j++)
{
b = k1 + k2;//k1与k2互换,且求出k2的后一项
printf("%d ",k1);
k1= k2;
k2 = b;
}
return 0;
}
输入20,输出结果如下;
五、求水仙花数:153=1^3+5^3+3^3
代码实现如下:
#include<stdio.h>
int main()
{
int i,j,k,a,b,c;
for(i=1;i<=9;i++)//百位循环,水仙花数是三位数,故i=1
{
j = 0;
for(j=0;j<=9;j++)//十位循环
{
k = 0;
for(k=0;k<=9;k++)//个位循环
{
a = i*100+j*10+k*1;
b = i*i*i+j*j*j+k*k*k;
if(a==b)
{
printf("%d ",a);
}
}
}
}
return 0;
}
输出结果如下:
六、求完数,完数为该数所有因子数相加仍然等于该数的数。例如28=1+2+4+7+14
代码实现
#include<stdio.h>
int main()
{
int i,j,k,a;
printf("请输入求完数范围");
scanf("%d",&i);
for(j = i;j>1;j--)//从最大开始,j<1停止
{
a = 1;//a赋初值1,1是所有数的因数
for(k=2;k<j;k++)
{
if(j%k==0)
{
a = a + k;//累计因数的和a
}
}
if(a == j)//在k循环的外面增加判断语句,是为了避免没有求完因数而a=j的情况的出现
{
printf("%d ",j);
}
}
return 0;
}
输入10000,输出结果如下;