一数三平方

有这样一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,如225625=4752,请问满足上述条件的所有六位数有多少。

sqrt的返回值是一个double型,如将sqrt的返回值强制转换成长整型,这样会使开平方后得到的小数(小数点后不为0)失去其小数点后面的部分,那么,再对这个强制转换后的数再平方,所得结果将不会等于原来开平方前的数。

void main()

{

long i, n, n1, n2, n3, n4, count = 0; /定义变量为长整型 /

printf("这样的数有:\n");

for (i = 100000; i <= 999999; i++) /遍历所有的六位数 /

{

n = (long)sqrt(i); /对i值开平方,得到一个长整型数值n/

if (i == n * n) /判断n的平方是否等于i/

{

n1 = i / 1000; /求出高三位数 /

n2 = i % 1000; /求出低三位数 /

n3 = (long)sqrt(n1); /对n1值开平方,得到一个长整型数值n3/

n4 = (long)sqrt(n2); /对n2值开平方,得到一个长整型数值n4/

if (n1 == n3 * n3 && n2 == n4 * n4)

/判断是否同时满足n1等于n3的平方、n2等于n4的平方 /

{

count++; /count作为计数器,记录满足条件的个数 /

printf("%ld,", i); /将最终满足条件的i值输出 /

}

}

}

printf("\n满足条件的有:%d个", count); /输出满足条件的数的个数 /

printf("\n");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值