Опитвам се да разреша някои проблеми на Ойлер на проекта и по някаква причина следният код ми дава грешка при деление на нула, когато се опитвам да го стартирам с големи числа. Може ли някой да ми каже защо?
import java.util.Scanner;
public class Problem3LargestPrimeFactor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter the number to find the largest prime factor for.");
long num = input.nextLong();
int largest = 1;
boolean isPrime = true;
for(int i = 2; i < num; i++) {
if(num % i == 0) {
for(int u = 2; u < i; u++){
if(i % u == 0)
isPrime = false;
}
if(isPrime)
largest = i;
}
}
}
}
Сега съм наясно, че това не е най-ефективният начин за проектиране на алгоритъма, но може ли някой да ми каже какво се случва тук?
int
. - person woz   schedule 18.12.2013num
еlong
, ноi
е самоint
. Така че, акоnum
е по-голямо от максималното цяло число,i++
в крайна сметка ще препълни. Предполагам, че в крайна сметка достига 0, след коетоnum % i
ще повиши грешка при деление на нула. - person Gareth Rees   schedule 18.12.2013