(1) if(c == 0 || i == 2)
неверно, также будет напечатано 2
для a == 5
.
(2) Чтобы выполнить то, что вы просите, без изменения кода (*) -Вы должны посчитать, сколько раз каждый главный фактор делится на число.Это можно сделать, просто добавив новый цикл перед оператором печати [псевдокод]:
boolean b = true;
int k = 1;
while (b) {
if (a % (int) Math.pow(i, k+1) == 0) k++;
else b = false;
}
в конце этого цикла, k обозначает, сколько раз i
является простым фактором a
.
(*) Примечание. Хотя этот подход должен сработать, я бы все же согласился с предложением @KerrekSB и переработал его.