自首数,麻烦帮我解析几句代码?
long weishu(long c,long d) //判断输入数字的位数并判断是否是自守数
{
int i=100;
long y;
while((int)c/i!=0) i=i*10;
if(fmod(d,(long)i)==0) //求余
type5(c);
return 0;
}
long if_zss(long a,long b) //计算平方数与输入数的差
{
long x,m,n;
for(x=a;x<=b;x++)
{
m=x*x;
n=m-x;
weishu(x,n);
}
return 0;
}
加粗体部分,为什么我用数代进去觉得不正确呢?
[解决办法]
long weishu(long c,long d) //判断输入数字的位数并判断是否是自守数// 传进来的两个数,第一个是原来的数字,第二个是平方后送去原来数字后剩下的值// [color=#FF0000]假设c有m位[/color],则d需要被10^m整除那就是自首数 { int i=100; long y;while((int)c/i!=0) i=i*10; // 这个地方就是求c的位数,[color=#FF0000]只有当i大于等于10^m时才会为0[/color]if(fmod(d,(long)i)==0) //求余 type5(c); return 0;}long if_zss(long a,long b) //计算平方数与输入数的差{ long x,m,n; for(x=a;x<=b;x++) { m=x*x; n=m-x; weishu(x,n); // 这个地方,x是原来的数字值,n是平方减掉数字本身的值 } return 0;}