मैं वर्तमान में ProjectEuler problem को हल करने का प्रयास कर रहा हूं और गति को छोड़कर मुझे सबकुछ नीचे मिल गया है। मैं लगभग निश्चित रूप से निश्चित रूप से निष्पादित करता हूं कि घोंसला वाले लूप के कारण कार्यक्रम धीरे-धीरे निष्पादित होता है। मुझे इस बारे में कुछ सलाह चाहिए कि इसे कैसे गति दें। मैं एक नौसिखिया प्रोग्रामर हूं, इसलिए मैं बहुत अधिक उन्नत तरीकों/विषयों से परिचित नहीं हूं।मैं इस कार्यक्रम को कैसे बढ़ाऊंगा?
public class Problem12 {
public static void main(String[] args) {
int num;
for (int i = 1; i < 15000; i++) {
num = i * (i + 1)/2;
int counter = 0;
for (int x = 1; x <= num; x++) {
if (num % x == 0) {
counter++;
}
}
System.out.println("[" + i + "] - " + num + " is divisible by " + counter + " numbers.");
}
}
}
संपादित करें: नीचे नई कोड तेजी से तेजी से होता है। लगातार लाइन प्रिंटिंग को हटा दिया गया है और साथ ही इसे और भी तेज करने के लिए हटा दिया गया है।
public class Problem12 {
public static void main(String[] args) {
int num;
outerloop:
for (int i = 1; i < 25000; i++) {
num = i * (i + 1)/2;
int counter = 0;
double root = Math.sqrt(num);
for (int x = 1; x < root; x++) {
if (num % x == 0) {
counter += 2;
if (counter >= 500) {
System.out.println("[" + i + "] - " + num + " is divisible by " + counter + " numbers.");
break outerloop;
}
}
}
}
}
}
सी की तरह एक तेजी से भाषा का उपयोग करके देखें, और सब पर इस एल्गोरिथ्म काम करता है, विभाजन के बजाय bitshifts और गुणा उपयोग करने का प्रयास करता है, तो वे जावा –
में उपलब्ध हैं? तो अगर 'i = 3' फिर' num = 6' और फिर 'counter = 4' जो गलत है – afsafzal
@SheheAnsar आप कैसे मान सकते हैं कि सी जावा के लिए तेज़ है, अगर आपको यह जानने के लिए पर्याप्त नहीं है कि क्या बिट्सफिफ्ट समर्थित हैं? – njzk2