User
Pass
2FA
 
 

Algoritm numar prim C++

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Freakz Forum Index -> Trash Bin -> Trash -> Programming / Scripting / Database
Author Message4972
MangloPici

[Veteran]



Status: Offline
(since 19-11-2023 23:34)
Joined: 27 Jan 2013
Posts: 1845, Topics: 109
Location: Pitesti/Bucuresti

Reputation: 402.9
Votes: 78

     
Post Posted: 14-04-2017, 19:43:54 | Translate post to: ... (Click for more languages)

Pentru cei ce au nevoie de asemenea lucruri, sa ramana pe aici, voi mai posta atat algoritmi usori cat si ceva mai greu :D

#include <iostream>

using namespace std;
int n,ok,d;
int main()


{
cout<<"n=";cin>>n;
ok=1;
if(n==1 || n==0) ok=0;
for(d=2;d<=n/2;d++)
if(n%d==0) ok=0;
if(ok==1) cout<<"Numarul n este prim";
else cout<<"Numarul n nu este prim";
return 0;
}


Skype: snopps.stef
Steam: Phvne
0 0
  
Back to top
View user's profile Send private message Yahoo! Messenger ID
destroi112

[DEV]



Status: Offline
(since 12-03-2020 22:13)
Joined: 24 May 2014
Posts: 4042, Topics: 119
Location: ---------

Reputation: 515.9
Votes: 118

   
Post Posted: 28-04-2017, 00:50:18 | Translate post to: ... (Click for more languages)

Aici toti algoritmi pe care i-am invatat eu pentru teza i-am scris cu explicatii (noroc ca le aveam in telefon)
PS: Sunt toti intr-un singur program.
Code:

#include <iostream>
#include <cstring>>
using namespace std;

int main()
{
    //suma cifrelor
    int s = 0,stoc,n,numar_cifre=0,inv=0;
    cout<<"n=";cin>>n;
    stoc = n;
    while(n != 0)
    {
        //adunam cifrele pt suma
        s += (n%10);
        //creste numarul de cifre
        numar_cifre++;
        //creem inverul
        inv = inv*10+(n%10);
        //trunchiem numarul
        n /= 10;
    }
    n = stoc;
    cout<<"Suma cifrelor numarul "<<n<<" este: "<<s<<endl;
    cout<<"Numarul "<<n<<" are "<<numar_cifre<<" cifre"<<endl;
    cout<<"Inverul numarul "<<n<<" este : "<<inv<<endl;
    //daca inverul e egal cu n atunci e palindrom
    if(inv == n)
    {
        cout<<"Numarul "<<n<<" este palindrom."<<endl;
    }
    else
    {
        cout<<"Numarul "<<n<<" nu este palindrom."<<endl;
    }
    //numar prim are 2 divizori (1 si pe el insusi)
    int count_div = 0;
    for(int i = 1; i <= n;i++)
    {
        if(n%i == 0)
        {
            count_div++;
        }
    }
    if(count_div == 2)
    {
        cout<<"Numarul "<<n<<" este prim."<<endl;
    }
    else
    {
        cout<<"Numarul "<<n<<" nu este prim."<<endl;
    }
    //descompunere in factori primi...
    int p = 0;
    //refoloesc variabila asta
    count_div = 2;
    cout<<"Descompunerea in factorii primi a numarului "<<n<<" este : ";
    while(n > 1)
    {
        p = 0;
        while(n % count_div == 0)
        {
            p++;
            n/=count_div;
        }
        if(p != 0)
        {
            cout<<count_div<<"^"<<p<<" ";
        }
        //crestem numarul la care ridicam in factori primi
        count_div++;
    }
    //reinitializam n cu valoarea initiala
    n = stoc;
    cout<<endl;
    //cautarea unei cifre intr-un numar;
    int cifra;
    cout<<"Cifra cautata : ";cin>>cifra; //IMPORTANT : Daca nu e cifra trebuie sa fie >=0 && <= 9(intervalul [0,9]
    if(cifra =< 0 || cifra >= 9)
    {
        cout<<"Trebuie sa introduci o cifra pentru a o putea cauta in numarul "<<n<<endl;
    }
    else //daca e cifra atunci facem verificarea
    {
        while(n != 0)
        {
            if(cifra == (n%10))
            {
                cout<<"Cifra "<<cifra<<" a fost gasita in numarul "<<stoc;
                break;
            }
            //trunchiem numarul
            n /= 10;
        }
        //n ajunge 0 ==> nu am gasit cifra cautata
        if(n == 0)
        {
            cout<<"Cifra "<<cifra<<" nu a fost gasita in numarul "<<stoc;
        }
    }
    cout<<endl;
    n = stoc;
    //multimea divizorilor proprii ai lui n
    char divizori_proprii[100];//stocam toti divizorii aici pentru ai afisa
    int k = 0;//valoare contor pentru pozitie
    cout<<"Divizorii proprii ai lui "<<n<<" sunt : ";
    for(int i = 2;i <= n/2;i++)
    {
        if(n%i == 0)
        {
            cout<<i<<" ";
            k = 1;
        }
    }
    if(k == 0)
    {
        cout<<" nici unul "<<endl;
    }
    cout<<endl;
    //cmmdc a 2 nr
    int nr1,nr2,x,y;
    cout<<"Primul numar : ";cin>>nr1;
    cout<<"Al 2-lea numar : ";cin>>nr2;
    x = nr1;
    y = nr2;
    while(nr1!=nr2)
    {
        if(nr1>nr2)
        {
            nr1 -= nr2;
        }
        else
        {
            nr2 -= nr1;
        }
    }
    cout<<"CMMDC-ul numerelor "<<x<<" "<<y<<" este "<<nr1<<endl;
    //cmmmc
    cout<<"CMMMC-ul numerelor "<<x<<" "<<y<<" este "<<(x*y)/nr1<<endl;
    return 0;
}



Retired from Amxmodx

0 0
  
Back to top
View user's profile Send private message
MangloPici

[Veteran]



Status: Offline
(since 19-11-2023 23:34)
Joined: 27 Jan 2013
Posts: 1845, Topics: 109
Location: Pitesti/Bucuresti

Reputation: 402.9
Votes: 78

     
Post Posted: 28-04-2017, 17:34:32 | Translate post to: ... (Click for more languages)

Voi mai posta si eu mai multi, i ai pus pe cei elementari. Ce clasa esti?

Skype: snopps.stef
Steam: Phvne
0 0
  
Back to top
View user's profile Send private message Yahoo! Messenger ID
destroi112

[DEV]



Status: Offline
(since 12-03-2020 22:13)
Joined: 24 May 2014
Posts: 4042, Topics: 119
Location: ---------

Reputation: 515.9
Votes: 118

   
Post Posted: 28-04-2017, 22:02:27 | Translate post to: ... (Click for more languages)

12-a - Bac-ul


Retired from Amxmodx

0 0
  
Back to top
View user's profile Send private message
MangloPici

[Veteran]



Status: Offline
(since 19-11-2023 23:34)
Joined: 27 Jan 2013
Posts: 1845, Topics: 109
Location: Pitesti/Bucuresti

Reputation: 402.9
Votes: 78

     
Post Posted: 29-04-2017, 20:46:09 | Translate post to: ... (Click for more languages)

Good luck with that my friend. Presupun ca dai bacul la info, nu?

Skype: snopps.stef
Steam: Phvne
0 0
  
Back to top
View user's profile Send private message Yahoo! Messenger ID
Maiter

[Young&Fearless]



Status: Offline
(since 05-11-2023 14:02)
Joined: 21 Jun 2018
Posts: 693, Topics: 168
Location: Romania

Reputation: 103.4
Votes: 114

Post Posted: 15-07-2018, 22:50:51 | Translate post to: ... (Click for more languages)

Algortimul acela nu este deloc bun din punct de vedere al timpului, puteai lejer sa pui i<=sqrt(n), deoarece daca un numar nu are niciun divizor pana la radicalul sau nu are nici dupa.
Una algoritm mai bun ar fi:
if((n%2==0 && n!=2) || n<2)
ok=0;
else
for(i=3;i*i<=n;i+=2)
if(!(n%i))
{ok=0;
break;}
if(ok)
cout<<"PRIM";
else
cout<<"NEPRIM";


Must check out!
-my profile
-my playlist
-my photo gallery
0 0
  
Back to top
View user's profile Send private message
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Freakz Forum Index -> Trash Bin -> Trash -> Programming / Scripting / Database  


The time now is 23-04-2024, 16:07:35
Copyright info

Based on phpBB ro/com
B

 
 
 







I forgot my password


This message appears only once, so
like us now until it's too late ! :D
x