各位大佬这道题用C语言求解

weixin_53426845 2020-12-09 09:02:29
输入n,求出所有小于或等于n的自然数对。自然数对是指2个自然数的和与差都是平方数,如8与17的和8+17=25与其差17-8=9都是平方数,则8和17称自然数对。
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
weixin_53426845 2020-12-10
  • 打赏
  • 举报
回复
引用 3 楼 Minikinfish的回复:
对了,1也算吗?比如 5+4=9 5-4=1
算 ,都是平方数
Minikinfish 2020-12-10
  • 打赏
  • 举报
回复
对了,1也算吗?比如 5+4=9 5-4=1
Minikinfish 2020-12-10
  • 打赏
  • 举报
回复
上面代码的

|| n == 47
改一下,改成

|| n == 49
Minikinfish 2020-12-10
  • 打赏
  • 举报
回复

bool IsSqrtNum(int n)
{
	if (n == 4
		|| n == 9
		|| n == 16
		|| n == 25
		|| n == 36
		|| n == 47
		|| n == 64
		|| n == 81
		|| n == 100
		|| n == 121
		|| n == 144
		|| n == 169
		|| n == 196
		|| n == 225
		|| n == 256
		|| n == 289
		|| n == 361
		|| n == 400)
	{
		return true;
	}
	else if (n > 400)
	{
		double dSqrt = sqrt(n);
		int nSqrt = (int)dSqrt;

		return nSqrt == dSqrt;
	}

	return false;
}

void Test(void)
{
	int n = 0;
	printf("请输入N:");
	scanf_s("%d", &n);
	if (n < 1)
	{
		printf("输入错误\r\n");
		return;
	}

	for (int i = 1; i <= n; ++i)
	{
		for (int j = i + 1; j <= n; ++j)
		{
			int add = i + j;
			int sub = j - i;

			if (IsSqrtNum(add) && IsSqrtNum(sub))
			{
				printf("%d+%d=%d\r\n%d-%d=%d\r\n", j, i, add, j, i, sub);
			}
		}
	}
}

请输入N:25
10+6=16
10-6=4
17+8=25
17-8=9
20+16=36
20-16=4
请按任意键继续. . .

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧