उदाहरण
import java.io.*;
import java.util.*;
public class Demo {
public static boolean divisionPossible(int myArr[], int nVal) {
int rem = 0;
for (int i = 0; i < nVal; i++)
rem = (rem + myArr[i]) % 3;
return (rem == 0);
}
public static void main(String[] args) {
int myArr[] = { 66, 90, 87, 33, 123 };
int nVal = 3;
if (divisionPossible(myArr, nVal))
System.out.println("3 से विभाज्य संख्या बनाना संभव है");
else
System.out.println("3 से विभाज्य संख्या बनाना संभव नहीं है");
}
}
आउटपुट
3 से विभाज्य संख्या बनाना संभव है
व्याख्या: Demo क्लास में 'divisionPossible' नामक एक फंक्शन होता है। यह जांचता है कि क्या संख्याओं का उपयोग 3 से विभाज्य संख्या बनाने के लिए किया जा सकता है। मुख्य फंक्शन में, मानों के साथ एक ऐरे और एक 'n' मान परिभाषित किया जाता है। फंक्शन को विशिष्ट आर्गुमेंट्स के साथ कॉल किया जाता है और प्रासंगिक संदेश कंसोल पर प्रदर्शित होगा।
गणितीय सिद्धांत:
एक संख्या 3 से विभाज्य होती है यदि उसके अंकों का योग 3 से विभाज्य होता है।
चूंकि हम अंकों को किसी भी क्रम में पुनर्व्यवस्थित कर सकते हैं, केवल सभी अंकों का योग मायने रखता है।
ऐरे तत्वों के लिए: प्रत्येक तत्व के अंकों का योग लें, फिर कुल योग की जांच करें।
कोड विश्लेषण:
दिया गया कोड ऐरे तत्वों को सीधे जोड़ता है (अंकों को नहीं)। यह तभी काम करता है जब ऐरे तत्व एकल अंक (0-9) हों।
सही सामान्य समाधान:
public static boolean canFormDivisibleBy3(int[] arr) {
int sum = 0;
for (int num : arr) {
// प्रत्येक संख्या के अंकों का योग जोड़ें
while (num > 0) {
sum += num % 10;
num /= 10;
}
}
return sum % 3 == 0;
}
// या स्ट्रीम के साथ:
public static boolean canFormDivisibleBy3Stream(int[] arr) {
return Arrays.stream(arr)
.flatMapToObj(String::valueOf)
.flatMapToInt(CharSequence::chars)
.map(c -> c - '0')
.sum() % 3 == 0;
}
उदाहरण ट्रेस:
ऐरे: [66, 90, 87, 33, 123]
अंक: 6,6, 9,0, 8,7, 3,3, 1,2,3
योग = 6+6+9+0+8+7+3+3+1+2+3 = 48
48 % 3 = 0 → संभव ✓
विस्तार: किसी भी विभाजक k के लिए:
public static boolean canFormDivisibleByK(int[] arr, int k) {
int sum = 0;
for (int num : arr) {
while (num > 0) {
sum = (sum + num % 10) % k; // मॉड्यूलो जल्दी लें
num /= 10;
}
}
return sum == 0;
}