当有趣又奇妙的各种数字(水仙花数、完全数、素数、阶乘和数、完全平方数、同构数)遇到C语言 ,将会擦出怎样的火花呢?让我们拭目以待。
#include<stdio.h>
#include<math.h>
//回文数
void huiwen()
{
int s,r;
int i;
printf("1000以内的回文数:\n");
for(i=0;i<1000;i++)
{
//由于数字分离过程会使原数发生改变,
//故设置一个变量代替原数参与分离
s=i;
//对每个数字逐位分离(从低位到高位)并重组为新的数字
int m=0;
while(s!=0)
{
r=s%10;
//根据循环处理的次数可得到原数的位数,
//从而利用*10将低位逐渐升为高位
m=10*m+r;
s=s/10;
}
//如果重组所得的数与原数相等 ,即正读反读都一样时
//则为回文数,打印出来
if(m==i)
{
printf("%d ",m);
}
}
printf("\n");
}
//同构数
void tonggou()
{
int i;
printf("1000以内的同构数:\n");
for(i=1;i<1000;i++)
//对10取余得最后1位,对100取余得最后2位,对1000取余得最后3位
if(i*i%10==i||i*i%100==i||i*i%1000==i)
printf("%d ",i);
printf("\n");
}
//完数
void wanquanshu()
{
int j,k,sum = 0;
printf("1000以内的完数:\n");
for(k=2;k<=1000;k++)
{
sum=0;
for(j=1;j<k;j++)
if(k%j==0)
sum=sum+j;
if(sum==k)
printf("%d ",k);
}
}
int jiecheng(int x)//求阶乘
{
int i,sum=1;
for