zadanie z dzielnikiem pierwszym

Odpowiedz Nowy wątek
2012-09-10 16:12

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

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;
}

Pozostało 580 znaków

sig
2012-09-10 16:17
sig

Rejestracja: 8 lat temu

Ostatnio: 11 godzin temu

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?

Pozostało 580 znaków

2012-09-10 16:20
2012-09-10 16:30

Rejestracja: 9 lat temu

Ostatnio: 4 lata temu

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
}
edytowany 1x, ostatnio: mto9, 2012-09-10 16:30

Pozostało 580 znaków

2012-09-10 16:35
Moderator

Rejestracja: 11 lat temu

Ostatnio: 1 rok temu

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,...


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2012-09-10 20:51

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

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 wogóle to wielkie dzięki za odpowiedzi :)

edytowany 1x, ostatnio: raven168in1, 2012-09-10 20:52

Pozostało 580 znaków

2012-09-10 21:24

Rejestracja: 13 lat temu

Ostatnio: 1 dzień temu

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;    
}

Pozostało 580 znaków

Odpowiedz

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