当前位置: 首页 > 面试题库 >

如何找出两个数字是否是质数?

桂志诚
2023-03-14
问题内容

我正在尝试编写一种方法,该方法将计算两个数字是否是赋值的相对质数。我主要是在寻找从哪里开始的答案。我知道有一种方法gcd()可以为我做很多事情,但是赋值几乎使我无需使用gcd或数组就可以做到。

我有点开始了,因为我知道我将不得不%for循环中使用运算符。

public static boolean relativeNumber(int input4, int input5){
    for(int i = 1; i <= input4; i++)

显然,此方法仅将返回,true或者false因为该main函数仅将根据这两个数字是否相对质数来打印特定行。

我想我可能不得不写两个for循环,无论是input4input5,可能还有一些类型的if语句逻辑&&操作数,但我不知道。


问题答案:

好在万一它们是相对质数的情况下,最大的公共除数是一个,因为-否则,两个数字都可以由该数字划分。因此,我们只需要一种算法来计算最大的公共除数,例如
Euclid的方法

private static int gcd(int a, int b) {
    int t;
    while(b != 0){
        t = a;
        a = b;
        b = t%b;
    }
    return a;
}

然后:

private static boolean relativelyPrime(int a, int b) {
    return gcd(a,b) == 1;
}

Euclid算法O(log n)中工作 ,因此比枚举可以优化为 O(sqrt n)的 所有潜在除数要快得多。



 类似资料:
  • 问题内容: 好的,我的问题不是如何确定数字是否为质数,因为我想我已经知道了,但是更多的是如何使其正确显示。 这是我的代码: 现在我的问题是,如果数字最终等于9,它会说它是质数,而不是。我认为问题在于中断在一个循环后就停止了它,因此它不会递增变量p,因此仅测试除以2(我认为)。但是,如果我删除断点,它将在每次通过时打印出“和不是素数”,直到退出循环为止。不知道该怎么办。 问题答案: 查找数字是否为素

  • 所以我有一个问题,当我计算一个数字时,比如说15,我必须显示这个:15=3x5,但我得到的是3x5x5,我不知道如何使它变成这样,所以它只显示3x5。还有一个问题是,我输入的数字是否是素数。有办法解决这个问题吗?我只需要这些,然后再编辑其他东西。

  • 问题内容: 在JavaScript中,如果窗口大小大于500px,我要告诉浏览器执行某些操作。我这样做是这样的: 这很好用,但是我想使用相同的方法,但是要有一定范围的数字。因此,如果窗口大小在500像素到600像素之间,我想告诉我的浏览器来做一些事情。我知道这行不通,但是这是我的想象: 在JavaScript中甚至可能吗? 问题答案: 测试是否大于或小于表示值或值本身均不会导致条件变为真。

  • 问题内容: 我想处理将两个数字相乘会导致溢出的特殊情况。代码看起来像这样: 那是一个简化的版本。在实际程序中,并且在运行时从其他地方获取。我想要实现的是这样的: 你如何建议我最好编写此代码? 更新:和总是非负在我的情况。 问题答案: Java的8有等,为整数且长。这些会引发未经检查的溢出。

  • 对于不懂几何或公式的人来说,这是一个非常简单的问题。我需要知道两个圆是否相交。就这样。 我有两个圆圈:圆圈1和圆圈2。这两个圆的大小相同,半径相同。他们永远不会有所不同。我需要一个公式来显示这些圆圈是否重叠。我不在乎在哪里。我不在乎多少。我不在乎任何细节,而是真假。圆圈是否重叠?我只需要一些我可以在Javascript中得到的东西。 这里的公式对我不起作用。如何检测一个圆和同一平面上的任何其他圆的

  • 问题内容: 我正在尝试解决给定两个数字的问题,找出它们是否是格雷码序列中的连续数字,即,如果它们是格雷码邻居,则假定未提及格雷码序列。 我在各种论坛上进行搜索,但找不到正确的答案。如果您可以为此提供解决方案,那就太好了。 我对这个问题的尝试-将两个整数转换为二进制,然后分别将两个数字相加,然后找出两个数字的总和之差。如果差异是1,则它们是格雷码邻居。 但是我觉得这不适用于所有情况。非常感谢您的帮助