2015-02-10 98 views
-4
class primeNumb { 
    public static void main(String args[]) { 

     int x; 
     int m; 

     for (x = 0; x < 100; x++){  
      for (m = 0; m < 100; m++)  
       if ((x/m == 1) && (x % m == 0)) {  
        System.out.println(x + "is a prime num"); 
       } 
     } 
    } 
} 

因此发现100以下的所有素数。内循环对于外循环1中的每一个都约为99x。在对外部循环进行的每一次内部计算中,它都会提出问题,如果将数字除以= 1,如果为真,则会询问是否有余数。就像质数如何只能被自己和1分开一样,但对于那一部分我们不需要计算。如果结果为真,则结果将被打印,并将其标记为质数。对??我错过了什么?代码似乎不打印任何东西,但空白。我的逻辑正确吗?不明白为什么我的素数编码不起作用

+0

你不应该从0开始 – 2015-02-10 02:48:24

+2

你怎么看'X/M == 1'是干什么的? – 2015-02-10 02:49:04

+0

x/m == 1正在查看是否有其他部门。就像5/4 = 1一样,但它有一个mod,所以它会移动到下一个,因为mod不是零,数字就会通过。所以它在内部循环中传递x,当它涉及到5时,它会= 1和0,因此它会打印它, – 2015-02-10 02:50:06

回答

0

我想你的代码应该是这样的:

for (x = 3; x < 100; x++) { // start from 3, there is no sense to check 0,1,2 
     boolean isPrime = true; 
     for (m = 2; m < x; m++) // start from 2 and up to X 
      if (x % m == 0) { // x can be divided by m -> not prime 
       isPrime = false; break; // stop inner loop 
      } 
     if (isPrime) System.out.println("["+x+"] is prime"); 
    } 

注意:这不是最佳的方式,只是为了显示自己的错误

0

三两件事: 首先,如果x < 3,打印出来X是一个总理,并继续。其次,如果你试图找出m是否是x的一个因子,即x%m == 0,那么X不是素数。

第三,您需要检查m作为仅高于sqrt(x)的因子。即,m < = sqrt(x)。

检查此代码。

public class PrimeNumber { 

    public static void main(String[] args) { 
     for (int x = 1; x < 100; x++){ 
      boolean isPrime = true;; 
      if (x < 4) { 
       System.out.println(x + " is a prime num"); 
       continue; 
      } 
      for (int m = 2; m <1+ Math.sqrt(x); m++) { 
       if (x % m == 0) {  
        //System.out.println(x + " is a NOT prime num"); 
        isPrime = false; 
        break; 
       } 
      } 

      if (isPrime) {  
       System.out.println(x + " is prime num"); 
      } 
     } 

    } 

} 

输出:

1 is a prime num 
2 is a prime num 
3 is a prime num 
5 is prime num 
7 is prime num 
11 is prime num 
13 is prime num 
17 is prime num 
19 is prime num 
23 is prime num 
29 is prime num 
31 is prime num 
37 is prime num 
41 is prime num 
43 is prime num 
47 is prime num 
53 is prime num 
59 is prime num 
61 is prime num 
67 is prime num 
71 is prime num 
73 is prime num 
79 is prime num 
83 is prime num 
89 is prime num 
97 is prime num 
相关问题