2014-10-20 52 views
-4

在这段代码中用户输入我想增加或仅质数之和其中的所有质或不是质数组合,但元素的第n个号...将第n个元素接受到数组中并将所有进入数组的素数相加?

public class prime { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner in = new Scanner(System.in); 
     System.out.println("enter the size of an array"); 
     int abc = in.nextInt(); 
     int num[] = new int[abc]; 
     int a = 0, sum = 0; 

     for (int k = 0; k < num.length; k++) { 
      System.out.println("enter the value" + (k + 1)); 
      num[k] = in.nextInt(); 
     } 

     for (int i = 0; i < num.length - 1; i++) { 
      for (int j = 2; j < i; j++) { 
       if (num[i] % i == 0) { 
        a = 1; 
        break; 
       } 
      } 
      if (a == 0) { 
       sum = sum + i; 
      } 
     } 
     System.out.println("number is prime" + sum); 
    } 
} 

回答

0

有你的程序中的逻辑错误。 1):在内for循环如果a被设置,那么它将始终包含值1。因此你必须纠正它。 (即,在语句sum=sum+i 2)之后将值0重新赋值为asum应累加素数的数组元素的值。因此,sum=sum+i - >sum=sum+num[i];

此外,在内部for循环,您可以把条件j<sqrt(i)减少程序的运行时间。假设您可以执行所有必要的操作以使代码可以运行。

相关问题