Wątek przeniesiony 2016-05-10 12:49 z C/C++ przez ŁF.

Czynniki pierwsze

0

Mam zadanie by stworzyć program, w którego wyjściu podane liczby będą podane jako iloczyn czynników pierwszych (np. 8=222).
Opracowałem program, który robi to dla jednej liczby, lecz nie wiem, jak zrobić to dla ich dowolnej ilości (liczb będzie nie więcej niż 10000).
Bardzo bym prosił o pomoc.
Tu jest wykonany przeze mnie kod.

#include <iostream>
using namespace std;
int main()
{
cout << "Wprowadz liczbe: ";
int l;
cin >> l;

for (int i=2; i <= l; i++)
{
 while(l % i == 0)
 {
   l /= i;
   cout << i <<"*";
 }
}
cout << endl;
return 0;
}
4

Dla N liczb w pętli wykonaj to samo N razy. A samo sprawdzawnie wystarczy do sqrt(l), nie do l, tylko wtedy trzeba rozważyć przypadek liczb pierwszych.

W ogóle, wydziel szukanie czynników do funkcji. Wtedy będziesz mógł zastosować memoizację, co dla większych liczb pierwszych lub względnie pierwszych może mieć duże znaczenie wydajnościowe.

1

Jak będziesz znał z góry ile będzie tych liczb to

#include <iostream>
using namespace std;


int main()
{
    int ileliczb;
    cin >> ileliczb;
    while (ileliczb--)
    {
        // twój kod
    }
}
 

Jak nie to

#include <iostream>
using namespace std;


int main()
{
    int liczba;
    while (cin >> liczba)
    {
        // twój kod od linijki poniżej cin >> liczba
    }
}
 

W tym przypadku wpisując liczby z klawiatury kończysz przez ctrl + d pod Linuksem, i chyba ctrl + z pod Windows.

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