公约数 只有一行代码 下面只给出自定义函数
#include<stdio.h>
#include<math.h>
int main()
{
int number,n,i,c,d,e;
printf("please input numer:");
scanf("%d",&number);
for(n=1,i=0;number/n>=1;n=n*10,i++);//求位数
printf("weishu:%d\n",i);
e=number;
for(;i>0;i--)
{
c=e/pow(10,i-1);
e=e-c*pow(10,i-1);
printf("%d,",c);
}//顺序输出
printf("\n");
for(;number>=1;number=number/10)
{
d=number%10;
printf("%d",d);
}//逆序输出
return 0;
}
水仙花数 fun(a,b)为a到b的水仙花数个数
int fun(int a,int b)
{
int num,weishu,n,d,sum=0,geshu=0,m;
if(a<100)a=100;
for(;a<=b;a++)
{for(n=1,weishu=0;a/n>=1;n*=10,weishu++);
num=a;
while(num)
{
sum+=pow((num%10),weishu);
num/=10;
}
if(sum==a)geshu++;
sum=0;
}
return geshu;
}
回文数 判断是否是回文数
int ishuiwen(int number)
{
if(number<10)return 1;
int div=10;
while(number/div>=10)
{
div*=10;
}
while(number!=0)
{
int l=number/div;
int r=number%10;
if(l!=r)return 0;
number=(number%div)/10;
div/=100;
}
return 1;
}