Program znajdujący najmniejszy dzielnik liczby - co jest nie tak?

0

Chcę, żeby programik znajdował najmniejszy dzielnik liczby.

#include <iostream>

using namespace std;

int main()
{
    int a;

    cin >> a;


    for(int i = 2; !(a % i); i++) //tu sprawdzam czy reszta z dzielenia a/i jest 0
    {
        cout << i;
    }
}

Problem w tym, że nie działa. Owszem, kompiluje się, ale albo nic nie wyświetla albo jakieś śmieci.
I nie mogę dotrzeć co jest niepoprawnie

bo normlanie

 cout << a % i; 

zwraca normalnie resztę z dzielenia

0

Może tak:

int i = 2;
cin >> a;
while(a % i) {
   i++;
}
cout<<i;
3

Bo ten kod nie wyświetla najmniejszego dzielnika, a wszystkie liczby od 2 do najmniejszego dzielnika wyłącznie. Powinieneś zrobić wypisywanie PO pętli, a nie w jej wnętrzu. Poza tym nie stosuj takich dziwnych zapisów jak !(a % b), które musisz potem komentować. Znacznie bardziej czytelne jest a % b != 0 i nic nie trzeba komentować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1