2011-07-11 11 views
19

द्वारा विभाजित किया जा सकता है, तो कैसे जाँच करने के लिए मेरी पूर्णांक के रूप में नीचे 3 से विभाजित किया जा सकता है, तो कैसे जाँच करने के लिए:एक पूर्णांक 3

for(int i=0; i<24; i++){ 
    //here, how to check if "i" can be divided by 3 completely(e.g. 3, 6, 15)? 

} 
+3

आपके पास स्वीकार्य उत्तर के बिना लगभग 20 प्रश्न हैं। शायद आप स्पष्ट प्रश्न पूछ सकते हैं या उत्तर पर फ़ॉलो कर सकते हैं ताकि उन्हें स्वीकार किया जा सके। –

उत्तर

5

एमओडी ऑपरेटर

for(int i=0; i<24; i++){ 
    if(i%3 == 0) 
     // It is divisible by 3 

} 
4

चेक मैं के शेष 3

if (i % 3 == 0) {} 
0
if(i % 3 == 0) 

% ऑपरेटर आप विभाजन के बाकी उद्धार से विभाजित मैं/3

1
अंदर

लूप:

if (i%3 == 0) 
    // it can be divided by 3 

% को "मोड" या "मॉड्यूलस" कहा जाता है और दो संख्याओं को विभाजित करते समय आपको शेष देता है।

ये सभी सत्य हैं:

6 % 3 == 0 
7 % 3 == 1 
7 % 4 == 3 
0
if(i % 3 == 0){ 
System.out.println("can be divided by 3"); 
}else{ 
System.out.println("cant divide by 3"); 
} 

असली के लिए इस सवाल का है?

9

आप एक पाश का उपयोग कर रहे हैं, तो आप इस तथ्य है कि हर तीसरे संख्या से 3.

for(int i = 0; i < 24; i += 3) { 
    System.out.println(i + " can be divided by 3"); 
    System.out.println((i+1) + " cannot be divided by 3"); 
    System.out.println((i+2) + " cannnot be divided by 3"); 
} 

यह एक सापेक्ष के लिए जरूरत से बचा जाता है विभाजित किया जा सकता है और का एक पहलू से कई लूप के कटौती का उपयोग कर सकते 3.

4

ठीक है, तुम क्या कर सकते थे करते (यह हो सकता है थोड़ा तेजी से हो, यह मेरी मशीन पर तेजी से होता है) है:

boolean canBeDevidedBy3 = ((int) (i * 0x55555556L >> 30) & 3) == 0; 
बजाय

boolean canBeDevidedBy3 = (i % 3) == 0; 

हालांकि, गुणा चाल केवल -2 <= i <= 1610612735 के लिए काम करता है। यह उत्तर this optimization question से प्रेरित था। लेकिन अगर मैं आपको एक टिप दे सकता हूं: (i % 3) == 0 का उपयोग करें। यह इतना आसान है, और हमेशा काम करेगा।

संबंधित मुद्दे