Факторинг чисел с двойной петлей

проблема & Пример: http://prntscr.com/atfkmo

Следующее решение получает неправильный вывод: http://prntscr.com/atfm5w

int main()
{
int n;
int f = 1;
cout << "Enter an integer: ";
cin >> n;

for (int i = 1; i <= n; i++)   // 1st loop to get list of numbers from 1-n.
{
cout << "| " << i << ": ";
while (f <= i) {      // 2nd loop to get list of factors for each number from 1-n

if (i%f == 0)     // divisibility check
{
cout << f;
}
f++;
}
cout << endl;
}

Я взломал это почти час до того момента, когда я больше не понимаю логику этого кода. Было бы очень признательно, если бы кто-то мог решить это или объяснить мне логику некорректного кода, чтобы я мог это исправить.

-2

Решение

Вам нужно переинициализировать значение f=1 за каждый номер:

int main()
{
int n;
int f = 1;
cout << "Enter an integer: ";
cin >> n;

for (int i = 1; i <= n; i++)
{
f=1;                          //   reinitialize
cout << "| " << i << ": ";
while (f <= i) {
if (i%f == 0)
{
cout << f;
}
f++;
}
cout<<"\n";
}
cout << endl;
}

https://ideone.com/KvFFDf

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]