Prime factors - резултатът ми дава само 60 точки

Здравейте на всички,

Моля за помощ, че не знам какъв тест да направя за да разбера какво точно съм пропуснал.

Кодът:

Благодаря предварително!

Здравей,
Решението ти третира само простите числа 2,3 и 5, а не всички. Помисли как да промениш кода си, за да проверяваш за всяко просто число по-малко или равно на n без да ги изписваш едно по-едно. Освен това не е нужно да дублираш int n с int temp, int n ти е достатъчен. Надявам се да съм помогнала, пиши ако не съм.
Поздрави,
Теди

1 Like

Без да видя условието на задача мога само да гадая за какво става дума, но:
Това което мога да те посъветвам:

Първо, не ги проверявай с if-else. Простите числа могат да бъдат доста повече от текущите 3 с които проверяваш.
За тази цел можеш да използваш for цикъл (https://www.w3schools.com/java/java_for_loop.asp)
Пускаш го от 2(защото това е първото просто число) до N.

for (int i = 2; i <= N; i++)
{
}

След това си проверяваш дали е prime. Можеш да го направиш с втори вложен for или с while цикъл.
Аз лично бих го направил с while:

for (int i = 2; i <= N; i++)
{
while (N % i == 0)
{
}
}
Тук целта е да изпринтиш всяко “i” което е делител на N.

Ако правилно разбирам какво търсиш, това трябва да ти е решението:

for (int i = 2; i <= N; i++)
{
while (N % i == 0)
{
N /= i;
System.out.println(i);
}
}

НО!!! Съветвам те да го дебъгнеш и да асимилираш как работи кода за да има смисъл от цялото упражнение.

5 Likes

Много благодаря за помощта и много подробно и детайлно обяснение.
Сега ми е срам за споделеният код, lol :smiley:

Решението беше толкова лесно, а пък колко ужасен е моят код. :smiley:
Благодаря за помощта, разбрах логиката и се оказало че съм решавал подобни задачи и преди, и сега се чудя защо се забих точно на тази.