c语言自守数 #include <stdio.h> void main(){ int n,m,k=1; scanf("%d",&n); m=n; while(m){k*=10;m/=10;

#include<stdio.h>voidmain(){intn,m,k=1;scanf("%d",&n);m=n;while(m){k*=10;m/=10;}if(n*... #include <stdio.h>
void main(){
int n,m,k=1;
scanf("%d",&n);
m=n;
while(m){k*=10;m/=10;}
if (n*n%k==n) printf("yes");
else printf("no");
printf(" %d * %d = %d\n",n,n,n*n);
}
谁能详细的解释一下m=n;
while(m){k*=10;m/=10;}
if (n*n%k==n)是什么意思,为什么这样写就能判断是否为自守数?
展开
 我来答
问号朵朵
2011-04-02 · TA获得超过3.4万个赞
知道小有建树答主
回答量:2383
采纳率:0%
帮助的人:741万
展开全部
实际就是按照输入是几位,然后取输入数平方的位数,如果相等就是自守数
while(m){k*=10;m/=10;}
是为了计算输入数n的位数。如输入数为2位(例25),则k=100,然后利用100和输入数的平方取余如果相等if (n*n%k==n)就是自守数。
例:输入数为:25;则k=100
25*25%100=25
更多追问追答
追问
是怎么判断输入数的位数的
追答
m为int,第次/10都会取整数部分。如25除2次10后为0, while(m)为false,k=100
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式