我正在开发一个程序,在根据我的算法应用一些计算后,我计算了一些类型long
。现在,我必须找到我生成的这个数字的相对素数。我怎样才能做到这一点?我知道如果两个数字是相对素数然后是GCD == 1
,但在这种情况下我没有另一个数字。我只有一个数字在我的程序中生成,我需要计算这个数字的相对素数。
修改
生成相对素数的条件是:
1 < relative prime < generated Number
感谢任何帮助。
答案 0 :(得分:4)
现在,我必须找到这个数字的相对素数
对于整数n
n>2
,n
和n-1
总是正确的。因此假设n
不是2或更小,只需要n-1
作为输出,因为它保证相对素数。如果n
等于2,那么您的情况就不可能了。
如果你想要一个非平凡的解决方案,你总是可以实际计算GCD。使用欧几里德的方法如下:
long findGCD(long l1, long l2) {
//end recursion
if(l2 == 0){
return number1;
}
return findGCD(l2, l1%l2);
}
并使用while循环尝试从n+2
开始的所有数字,直到获得1的GCD。