这个程序是一个基本的尝试,寻找一对孪生素数,在给定的数值之前和之后的整数line.The代码看起来很好,但没有给出任何输出,也不是它终止post运行。我想知道it.Thanks的问题!
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");
}
}
}发布于 2014-11-30 01:45:08
for(int x=inp_num;x>=inp_num;x++){ //checking limit [inpnum,infinity]这行代码将无限期运行。
另外,
公共布尔素数(Int num)
此函数不会正确检查质数。我建议您查找一些简单的已知检查素数的方法,如Eratosthenes sieve
发布于 2014-12-11 05:01:52
关于您的 boolean prime(int n) 方法的:
你用来寻找素数的方法是错误的。知道每个数字都是一个或多个素数的乘积,我们实际上可以使用n的平方根来使事情变得更简单。
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。
发布于 2019-06-14 14:58:16
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. https://stackoverflow.com/questions/27205021
复制相似问题