首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成对的孪生素数

成对的孪生素数
EN

Stack Overflow用户
提问于 2014-11-30 01:36:55
回答 3查看 1K关注 0票数 0

这个程序是一个基本的尝试,寻找一对孪生素数,在给定的数值之前和之后的整数line.The代码看起来很好,但没有给出任何输出,也不是它终止post运行。我想知道it.Thanks的问题!

代码语言:javascript
复制
public class twin {

    public boolean prime(int num) { // function to check for a prime number

        if (num % 2 == 1 && (num % 3 == 2 || num % 3 == 1)) {
            return true;

        } else
            return false;

    }

    public static void main(String args[]) { // main
        int inp_num = 7; // given number too check for twin primes before or
                            // after it
        twin ob = new twin();
        int arr[] = new int[5];
        for (int x = inp_num; x > 0; x--) { // checking limit [o,inpnum)
            boolean b = ob.prime(x);
            if (b = true) {
                if (ob.prime(x - 2) == true) {
                    arr[0] = x;
                    arr[1] = x - 2;
                }

            }

        }
        for (int x = inp_num; x >= inp_num; x++) { // checking limit
                                                    // [inpnum,infinity]
            boolean b = ob.prime(x);
            if (b = true) {

                if (ob.prime(x + 2) == true) {
                    arr[2] = x;
                    arr[3] = x + 2;
                }

            }

        }
        for (int i = 0; i < 4; i++) {
            System.out.println(arr[i] + "\t");

        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2014-11-30 01:45:08

代码语言:javascript
复制
for(int x=inp_num;x>=inp_num;x++){ //checking limit [inpnum,infinity]

这行代码将无限期运行。

另外,

公共布尔素数(Int num)

此函数不会正确检查质数。我建议您查找一些简单的已知检查素数的方法,如Eratosthenes sieve

票数 0
EN

Stack Overflow用户

发布于 2014-12-11 05:01:52

关于您的 boolean prime(int n) 方法的:

你用来寻找素数的方法是错误的。知道每个数字都是一个或多个素数的乘积,我们实际上可以使用n的平方根来使事情变得更简单。

代码语言:javascript
复制
public boolean prime(int n) {
  if (n % 2 == 0) return false;

  for (int i = 3; i <= Math.sqrt(n); i += 2) {
    if (n % i == 0) return false;
  }
}

我们需要检查n是否可以被2整除,因为任何偶数都是复合的;也就是说,它可以被除1以外的数和它本身整除。

我们从3开始,因为1不是素数,而且我们已经检查了2。我们每一步都将i递增2,因为我们只检查奇数。

最后,我们只需要到n的平方根,因为如果合成,每个数字都保证有一个小于或等于所述数字的平方根的素因数。

关于你的循环for (int x = inp_num; x >= inp_num; x++) { // checking limit

此循环将不会执行。请记住,在程序的开头设置了inp_num = 7。因为循环结束条件需要x >= 7,所以该条件已经满足,因此不会执行。如果你想让循环执行一次,比如

for (int x = inp_num; x > inp_num; x++) { // checking limit

票数 0
EN

Stack Overflow用户

发布于 2019-06-14 14:58:16

代码语言:javascript
复制
int count = 0;
For(int a = 1; a <= num; a++)〔 if (num % a = 0)
        Count++;
    else
        Continue;〕
if (count == 2)
    System.out.println(num + "is a prime number ");
else
    System.out.println(num + "is a prime number); //this is to check whether number is prime. 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27205021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档