simth(n),表示n的所有位上的数的和ans与n的所有质因子的每位上的数字之和sum,相等
主要在于求一个数的质因数
附:
对n分解质因数,应先找到一个最小的质因数,然后按下面的步骤:
1,如果这个质数刚好等于n,则说明分解结束,直接输出就可以
2,如果n不等于这个质数,且能被n整除,则输出这个质数
3,如果不能被整除,则i++;
对n分解质因子
#include<stdio.h>
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF)
{
printf("%d=",n);
for(i=2;i<=n;i++)
while(n!=i)
{
if(n%i==0)
{
printf("%d*",i);
n/=i;
}
else break;
}
printf("%d\n",n);
}
return 0;
}
#include"stdio.h"
#include"string.h"
#include"math.h"
//#define N 100000001
int fun(int a)
{
int i=0;
while(a)
{
i+=a%10;
a/=10;
}
return i;
}
int smith(int n)
{
int i,t;
int sum;
int ans;
ans=fun(n);
sum=0;
i=2;t=n;
while(i<=(int)sqrt(double(n)))
{
while(n%i==0)
{
n/=i;
sum+=fun(i);
}
i++;
}
if(n!=1)sum+=fun(n);
if(sum==ans&&n!=t)return 1;
return 0;
}
int main()
{
int n;
while(scanf("%d",&n)!=-1&&n)
{
while(1)
{
if(smith(++n))
{
printf("%d\n",n);
break;
}
}
}
return 0;
}