#P3361. Gaussian Prime Factors
Gaussian Prime Factors
题目描述
设 (a, b, c, d) 为整数。若存在整数 (e) 和 (f) 使得 (c + dj = (a + bj)(e + fj)),则称复数 (a + bj)(其中 (j^2 = -1))是 (c + dj) 的因数。
当复数 (a + bj)((a, b) 为整数)的因数仅有 (1, -1, -a - bj) 和 (a + bj) 时,称其为高斯素数。
以下是高斯素数的例子:(1 + j, 1 - j, 1 + 2j, 1 - 2j, 3, 7)。
整数 (5) 的高斯素因数分解为:
- (1 + 2j) 和 (1 - 2j),或
- (2 + j) 和 (2 - j),或
- (-1 - 2j) 和 (-1 + 2j),或
- (-2 - j) 和 (-2 + j)。
请编写程序,找出正整数 (n) 的所有高斯素因数。
输入格式
每个测试用例占一行,包含一个正整数 (n)。
输出格式
每个测试用例输出一行,为 (n) 的高斯素因数。若 (a + bj) 是高斯素因数,则需满足:
- 当 (b \neq 0) 时,(a > 0) 且 (|b| \geq a);
- 当 (b = 0) 时,输出为 (a)。
输出的高斯素因数需按以下规则排序:
- 先按实部 (a) 升序排列;
- 若实部相同,按虚部 (b) 的绝对值升序排列;
- 若存在共轭因数(如 (a + bj) 和 (a - bj)),正虚部的因数排在负虚部之前。
输入数据示例 1
2
5
6
700
输出数据示例 1
Case #1: 1+j, 1-j
Case #2: 1+2j, 1-2j
Case #3: 1+j, 1-j, 3
Case #4: 1+j, 1-j, 1+2j, 1-2j, 7
来源
马尼拉 2006