042 一数三平方

例:有这样一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,如225625=475²,求满足上述条件的所有六位数。

核心算法:判断一个数是否是整数的平方

函数 double sqrt(double num)返回参数num的平方根(double型)
要判断强制取整是否会导致数据流失(小数点后不为0的小数会失去小数部分)
如果(int) sqrt(n)*(int) sqrt(n) == n,说明n是整数的平方
或如果(int) sqrt(n) == sqrt(n),说明根号下n是整数,即n是整数的平方

#include<stdio.h>
#include<math.h>
int main()
{
	long i,n,n1,n2,n3,n4,count=0;
	printf("这样的数有:\n");
	for(i=100000;i<=999999;i++)/*最小的六位数是100000,最大的六位数是999999,对所有六位数按条件进行试探*/
	{
		n=(long)sqrt(i);
		if(i==n*n)/*判断这个六位数是否为整数的平方*/
		{
			n1=i/1000;/*求出高三位数*/
			n2=i%1000;/*求出低三位数*/
			n3=(long)sqrt(n1);
			n4=(long)sqrt(n2);
			if(n1==n3*n3&&n2==n4*n4)/*判断其高三位和低三位是否均为整数的平方*/
			{
				count++;/*count作为计数器,记录满足条件的个数*/
				printf("%ld",i);
			}
		}
	}
	printf("\n满足条件的有:%d个",count);
	printf("\n");
	return 0;
}

#include<stdio.h>
#include<math.h>
int main()
{
	long n,n1,n2;
	int count = 0;
	printf("这样的数有:\n");
	for(n=100000;n<=999999;n++)
	{
		if((longsqrt(n)==sqrt(n))
		{
			n1=n/1000;
			n2=n%1000;
			if((long)sqrt(n1)==sqrt(n1)&&(long)sqrt(n2)==sqrt(n2))
			{
				count++;
				printf("%ld",n);
			}
		}
	}
	printf("\n满足条件的有:%d个",count);
	printf("\n");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值