zadanie z dzielnikiem pierwszym

0

Mam do zrobienia taki program :
//Wczytać liczbę naturalną n>=2. Program ma wypisać wszystkie
//dzielniki pierwsze liczby n .
Tyle , że nie wiem co dodać żeby były to dzielniki pierwsze , a nie zwykłe dzielniki. Może ktoś coś wie ?

#include <iostream>
using namespace std;
int main()
{
int n;
int i;
cout<<"jaka liczba ? "<<endl;
cin>>n;
if(n<2)
{
do
{
cout<<"nie wlasciwe dane"<<endl;
cout<<"podaj liczbe wieksza , rowna 2: "<<endl;
cin>>n;
}
while(n<2);
}
cout<<"dzielniki pierwsze to :"<<endl;
for(i=1;i<n;i++)
{
do
{
if (n%i==0)
cout<<i<<endl;
i++;
}
while(i<n);
}
system("pause");
return 0;
}

0

Czym jest dzielnik pierwszy? chodzi o 1 liczbę czyli najmniejszy dzielnik (bo pierwszy), czy też dzielniki które są jednocześnie liczbami pierwszymi(na co wskazuje "wszystkie dzielniki pierwsze"), a może jeszcze coś innego?

0
#include <iostream>
using namespace std;

bool jestPierwsza(int liczba);

int main()
{
    int n;
    int i;
    cout<<"jaka liczba ? "<<endl;
    cin>>n;
    if(n<2)
    {
       do
       {
           cout<<"nie wlasciwe dane"<<endl;
           cout<<"podaj liczbe wieksza , rowna 2: "<<endl;
           cin>>n;
       }
    while(n<2);
     }
     cout<<"dzielniki pierwsze to :"<<endl;
     for(i=1;i<n;i++)
     {
         do
         {
                 if (n%i==0 && jestPierwsza(i)) 
                 cout<<i<<endl;
                 i++;
         }   
         while(i<n);
     }
system("pause");
return 0;    
}

bool jestPierwsza(int liczba)
{
// tutaj sprawdzasz czy liczba jest pierwsza
}
1

Wydajniej będzie tak: dla danej liczby n szukamy najmniejszego dzielnika p większego niż 1, zastępujemy liczbę n liczba n/p i szukamy najmniejszego dzielnika większego niż p,...

0

mto9 , a możesz napisać jak sprawdzić w tej funkcji czy jest to liczba pierwsza , bo jestem już skołowany od tego programowania .

A tak w ogóle to wielkie dzięki za odpowiedzi :)

1

Nie ma sensu sprawdzać, czy liczba jest pierwsza, jak już napisał bogdans.

#include <iostream>
using namespace std;

bool jestPierwsza(int liczba);

int main()
{
    int n;
    int p;
    int ostatniaWypisana=0;
    cout<<"jaka liczba ? "<<endl;
    cin>>n;
    if(n<2)
    {
       do
       {
           cout<<"niewlasciwe dane"<<endl;
           cout<<"podaj liczbe wieksza, rowna 2: "<<endl;
           cin>>n;
       }
    while(n<2);
     }
     cout<<"dzielniki pierwsze to :"<<endl;
     p=2;
     while(p<=n)
     {
        if(!(n%p))
        {
         n/=p;
         if(ostatniaWypisana!=p)
         {
            cout << p << endl;
            ostatniaWypisana = p;
         }
        }
        else p++;
     }

system("pause");
return 0;    
}

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