1. 程式人生 > >C/C++ 演算法分析與設計:列舉(分數拆分)

C/C++ 演算法分析與設計:列舉(分數拆分)

題目描述

現在輸入一個正整數k,找到所有的正整數x>=y,使得1/k=1/x+1/y.

輸入

第一行輸入一個整數n,代表有n組測試資料。 接下來n行每行輸入一個正整數k

輸出

按順序輸出對應每行的k找到所有滿足條件1/k=1/x+1/y的組合

樣例輸入

2
2 
12

樣例輸出

1/2=1/6+1/3
1/2=1/4+1/4
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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int i,j,n,k,f;
	while(cin>>n)
	{
	while(n--)
	{
		cin>>k;
		f=k+1;
		for(i=k+1;i<=k*f;i++)
			for(j=i;j<=k*f;j++)
				if(k*(i+j)==i*j)
					cout<<"1/"<<k<<"="<<"1/"<<j<<"+"<<"1/"<<i<<endl;
				}
	}
	return 0;
}