2016-10-15 46 views
1

我使用Java,並希望找到在0到100之間的所有奇數,由7總和奇數整數2之間整除的7

我這是可分的總和:

public class odd7{ 
    public static void main(String[] args) 
    { 
     int i = 1; 
     int a; 
     int b; 
     int sum = 0; 
     while(i <= 100) 
     { 
      a = i % 2; 
      b = i % 7; 
      if(a==1 && b==0) 
      { 
       sum = sum + i; 
      } 
      i = i + 1; 
     } 
     System.out.println(sum); 
    } 
} 

它工作得很好,但我認爲它可以更短。

謝謝!

+0

你說得對。這可以更短。如果您使用Java 8,使用Stream API,它可以非常短! –

回答

2

7開始和14遞增(只保留奇數):

int sum = 0; 
for(int i = 7; i <= 100; i += 14) { 
    sum += i; 
} 
System.out.println(sum); 

(我的理解是怎樣的一個黑客,但它僅僅是一個可能的答案!)

0

不要將其分配給兩個不同的變量a和b。

public class odd7{ 
    public static void main(String[] args) 
    { 
     int i = 1; 
     int sum = 0; 
     while(i <= 100) 
     { 
      if(((i % 2)==1) && ((i % 2)==0)) 
      { 
       sum = sum + i; 
      } 
      i++; 
     } 
     System.out.println(sum); 
    } 
} 
0

所有你需要的是一個是14加7倍的倍數的數字,所以可以更簡單:

public static void main(String[] args) { 
    int sum = 0; 
    for (i = 7 ; i <= 100; i += 14) { 
    sum+=i; 
    } 
    System.out.println(sum); 
} 
+0

14的倍數不能是奇數,對吧? –

+0

@BalkrishnaRawool - 你是對的,我看着他最初的代碼,並認爲他甚至意味着(因爲他正在尋找我%2 == 0)。現在將其修正爲7 + 14的倍數 –

2

的smater方式我會想出將是這樣:

  • 將100除以7.並得到它的abs。這是他可以使用的最大被乘數7。
  • 循環所有奇數從1開始,直到前一步的數字。
  • 添加當前號碼的所有結果X 7.

和代碼:

int sum =0; 
int maxFactor = 100/7; 
for (int i = 1; i <= maxFactor; i+=2) 
    sum += i*7; 
0

測試與下面的代碼片段:

 int i = 7; 
     int sum = 0; 
     while(i <= 100) 
     { 
      if(i%7 == 0) 
      { 
       sum += i; 
      } 
      i += 2; 
     } 

     System.out.println(sum); 

這將減少近一半需要的迭代。