一数三平方

问题描述:

什么是一数三平方呢?就是这样的一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,如225635=475的平方。求满足上述条件的所有六位数。

解题思路:

利用for循环对100000~999999之间的所有的数按条件进行判断,将满足条件的数在屏幕上打印出来。设循环变量为i,初值为100000,从100000变化到999999;依次判断条件是否成立,如果成立则输出,否则不输出。

1.对正在判断的数 i 进行 开平方,得到一个长整型的数值 n .

n=(long)sqrt((float)i);

 程序中用到了数学函数sqrt(),因此在头文件中就必须包括数学函数库文件“#include<math.h>”

sqrt函数的一般形式:double sqrt(double sum),sqrt的函数返回值是一个double型,我们将sqrt函数的返回值强制转换成长整型,这样会使开平方后得到的小数失去小数点后面的部分,则平方后就不是原来的数了,若小数点后面为0,就不会产生数据流失,这样开方后的数和平方的数还是一样的,利用这个办法来判断一个数开方之后是整数。

,2.判断n的平方是否等于i,如果等于则求出其高三位n1和低三位n2;

if (i == n * n)
		{
			n1 = i / 1000;
			n2 = i % 1000;
}

3.对高三位n1和低三位n2开平方,分别得到一个长整型的数值n3和n4;

n3 = (long)sqrt((float)n1);
n4 = (long)sqrt((float)n2);

4.判断n3和n4的平方是否同时满足等于n1和n2,如果满足条件就打印输出;

if ((n1 == n3 * n3) && (n2 == n4 * n4))
			{
				printf("%ld\t",i);
			}

 因为定义了长整型变量,因此在输出的时候应该使用%ld的格式进行输出;

 完整的程序运行:

#include<stdio.h>
#include<math.h>
int main(void)
{
	long i, n1, n2, n3, n4, n;
	printf("这些数有:\n");
	for (i = 100000; i <= 999999; i++)
	{
		n = (long)sqrt((float)i);
		if (i == n * n)
		{
			n1 = i / 1000;
			n2 = i % 1000;
			n3 = (long)sqrt((float)n1);
			n4 = (long)sqrt((float)n2);
			if ((n1 == n3 * n3) && (n2 == n4 * n4))
			{
				printf("%ld\t",i);
			}
		}
	}
	printf("\n");
}

运行结果:

 

当然这并不是唯一的方法,我也是一个小白,只是将自己每天学的一个知识分享到这个上面,可能会有些错误,希望各位大佬指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿彬想学编程_可惜不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值