Forumul Scientia

IT şi electronică => Programare => Subiect creat de: Ayumi din Decembrie 20, 2011, 08:21:37 PM

Titlu: numere prietene
Scris de: Ayumi din Decembrie 20, 2011, 08:21:37 PM
Buna seara !
Imi puteti spune de de ce nu merge programul meu ? Trebuie sa afisez toate numerele prietene mai mici sau egale decat un numar n introdus de la tastatura. (2 numere sunt prietene daca diferenta dintre ele este de 2 si sunt amandoua numere prime) De exemplu,pentru n = 11 se va afisa (3,5);(5,7).

#include <iostream>
using namespace std;

int main()
{
int a,b,n,ok1,ok2,d1,d2;//am folosit variabilele ok1 si ok2 pt. a verifica daca numerele a si b sunt prime
    for (a = 3;a < n;a++)
    {
        ok1 = 0;
        for (d1 = 2;d1 <= a/2; d1++)
        {
            if (a % d1 == 0) ok1 = 1;
        }
        if (ok1 == 0)
        {
            b = a+2;
            ok2 = 0;
            for (d2 = 2;d2 <= b/2;d2++)
            {
                if (b % d2 == 0)ok2 = 1;
         
            }
            if (ok2 == 0)cout << "(" << a << "," << b << ")" << ";";
           
          }
        }

return 0;
}
Titlu: Răspuns: numere prietene
Scris de: andrei.92 din Decembrie 20, 2011, 10:05:17 PM
Probabil pentru ca lipseste un: cin>>n; (sau daca vrei: cout<<"Introduceti numarul de la tastatura:"; cin>>n;)                                                                                     
Titlu: Răspuns: numere prietene
Scris de: Ayumi din Decembrie 20, 2011, 10:08:33 PM
Da,nu imi vine sa cred. Nu stiu cum de nu am observat acest lucru :)) Aveam impresia ca am scris cin >> n :))
Imi pare rau... Greseala mea
Titlu: Răspuns: numere prietene
Scris de: mircea_p din Decembrie 20, 2011, 10:31:41 PM
Citat din: Ayumi din Decembrie 20, 2011, 08:21:37 PM
Buna seara !
Imi puteti spune de de ce nu merge programul meu ? Trebuie sa afisez toate numerele prietene mai mici sau egale decat un numar n introdus de la tastatura. (2 numere sunt prietene daca diferenta dintre ele este de 2 si sunt amandoua numere prime) De exemplu,pentru n = 11 se va afisa (3,5);(5,7).
De unde e definitia asta? Numere prietene inseamna (si) cu totul altceva: fiecare numar este egal cu suma divizorilor celuilat. Prima pereche de numere prietene este 220, 284.
S-a schimbat sensul termenului intre timp? Sau poate e unul mai restrans.
Titlu: Răspuns: numere prietene
Scris de: AlexandruLazar din Decembrie 20, 2011, 11:47:18 PM
Sau una din sutele de greşeli din manualele de informatică de la noi, n-ar fi prima ;).

Titlu: Răspuns: numere prietene
Scris de: zec din Decembrie 21, 2011, 03:07:03 PM
Pentru numere mari e bine sa simplifici putin programul .Ciclul for poate sa mearga pana la partea intreaga a radacini patrate a numarului .
Titlu: Răspuns: numere prietene
Scris de: Ayumi din Decembrie 22, 2011, 08:51:26 PM
Citat din: mircea_p din Decembrie 20, 2011, 10:31:41 PM
Citat din: Ayumi din Decembrie 20, 2011, 08:21:37 PM
Buna seara !
Imi puteti spune de de ce nu merge programul meu ? Trebuie sa afisez toate numerele prietene mai mici sau egale decat un numar n introdus de la tastatura. (2 numere sunt prietene daca diferenta dintre ele este de 2 si sunt amandoua numere prime) De exemplu,pentru n = 11 se va afisa (3,5);(5,7).
De unde e definitia asta? Numere prietene inseamna (si) cu totul altceva: fiecare numar este egal cu suma divizorilor celuilat. Prima pereche de numere prietene este 220, 284.
S-a schimbat sensul termenului intre timp? Sau poate e unul mai restrans.

La scoala,ne-a pus sa rezolvam acest exercitiu.Profesoara a numit aceste numere prietene amiabile.Probabil ca nu si-a dat seama ca definitia nu este cea buna :)
Titlu: Răspuns: numere prietene
Scris de: zec din Decembrie 23, 2011, 02:32:40 AM
ele se numesc numere prime pereche.Una din problemele parca nerezolvate e data de intrebarea daca exista cumva o infinitate de aceste numere prime pereche.