分数拆分

发布时间 2023-04-13 21:40:42作者: xXinG9199

问题描述

编写程序,输入一个正整数m,找到所有的正整数x和y(其中x ≥ y),使得1/m = 1/x + 1/y。

输入格式

第1行包含一个整数n,代表有n组测试数据。

接下来的n行每行包含一个正整数m。

输出格式

按顺序输出对应每行的m找到所有满足条件1/m=1/x+1/y的组合。

如果某个m值找到多种组合,则按照x由大到小的顺序输出。

数据规模与约定

n的值约定为 1 ≤ n ≤ 10。

m的值约定为 2 ≤ m ≤ 100。

样例输入

2
3
12

样例输出

1/3=1/12+1/4
1/3=1/6+1/6
1/12=1/156+1/13
1/12=1/84+1/14
1/12=1/60+1/15
1/12=1/48+1/16
1/12=1/36+1/18
1/12=1/30+1/20
1/12=1/28+1/21
1/12=1/24+1/24

示例

int main()
{
	int m, mm;
	int n = 0;
	scanf("%d", &n);
	while (n--) {
		scanf("%d", &m);
		int m2 = m * m;
		for (int i = 1; i < m2; i++)
		{
			if (2 * m <= m2 / i + m) {
				if (m2 % i == 0) {
					mm = m2 / i + m;
					printf("1/%d=1/%d+1/%d\n", m, m2 / i + m, i + m);
				}
			}
			else
				break;
		}
	}
	return 0;
}