Informatică, întrebare adresată de annalovver, 9 ani în urmă

Am mai multe probleme...
Ma ajutati?
Vreau in C++,daca ati putea sa evitati for.
CMMDC
Să se scrie un program care să determine cel mai mare divizor comun a două numere naturale citite de la tastatură.
Date de intrare
Programul citește de la tastatură două numere naturale a și b.
Date de ieşire
Programul afișează pe ecran numărul x, cel mai mare divizor comun al numerelor a și b.
Restricţii şi precizări
0 <= a, b < 1.000.000.000
dacă ambele numere sunt egale cu 0 se va afișa valoarea -1

CMMMC
Cerinţa
Să se scrie un program care să determine cel mai mare divizor comun a două numere naturale citite de la tastatură.

Date de intrare
Programul citește de la tastatură două numere naturale a și b.

Date de ieşire
Programul afișează pe ecran numărul x, cel mai mare divizor comun al numerelor a și b.

Restricţii şi precizări
0 <= a, b < 1.000.000.000
dacă ambele numere sunt egale cu 0 se va afișa valoarea -1

Divizorii oglinditului
Cerinţa
Se citește un număr natural n. Să se determine numărul de divizori ai oglinditului lui n.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran numărul D, reprezentând rezultatul cerut.

Restricţii şi precizări
1 ≤ n ≤ 1.000.000.000
Numarul divizorilor pari
Cerinţa
Se citește un număr natural n. Să se determine câți divizori pari are acest număr.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran numărul C, reprezentând numărul divizorilor pari ai lui n.

Restricţii şi precizări
0 < n < 1.000.000.000
EgaleOglindit
Cerinţa
Se dă un şir cu n elemente, numere naturale. Să se verifice dacă oglinditul primului element apare printre celelalte elemente ale șirului.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă există în şir elemente egale cu oglinditul primului element, respectiv NU în caz contrar.

Restricţii şi precizări
1 ≤ n ≤ 100
elementele şirului vor avea cel mult 9 cifre
nprime
Cerinţa
Să se scrie un program care să verifică dacă două numere naturale citite de la tastatură sunt prime între ele.

Date de intrare
Programul citește de la tastatură două numere naturale a și b.

Date de ieşire
Programul afișează pe ecran mesajul PIE, dacă a și b sunt prime între ele, respectiv NOPIE în caz contrar..

Restricţii şi precizări
0 < a, b < 1.000.000.000
două numere naturale sunt prime între ele dacă cel mai mare divizor comun al lor este 1
PrimeIntreEle
Cerinţa
Să se scrie un program care să verifică dacă două numere naturale citite de la tastatură sunt prime între ele.

Date de intrare
Programul citește de la tastatură două numere naturale a și b.

Date de ieşire
Programul afișează pe ecran mesajul PIE, dacă a și b sunt prime între ele, respectiv NOPIE în caz contrar..

Restricţii şi precizări
0 < a, b < 1.000.000.000
două numere naturale sunt prime între ele dacă cel mai mare divizor comun al lor este 1
Suma Divizorilor impari
Cerinţa
Se citește un număr natural n. Să se determine suma divizorilor impari ai săi.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma divizorilor impari ai lui n.

Restricţii şi precizări
0 < n < 1.000.000.000
PrimeInterval
Cerinţa
Să se scrie un program care citește două numere naturale a și b și determină câte numere prime sunt în intervalul închis determinat de a și b.

Date de intrare
Programul citește de la tastatură numerele a și b.

Date de ieşire
Programul afișează pe ecran numărul n, reprezentând numărul de numere prime din intervalul închis determinat de a și b.

Restricţii şi precizări
0< a,b <100000
numerele citite nu respectă obligatoriu relația a ≤ b
un număr natural este prim dacă are exact doi divizori distincți: 1 și el însuși.

As dori minim 5 probleme de aici.Multumesc frumos!

Răspunsuri la întrebare

Răspuns de Relampago
11
#include <iostream>
int a,b,r,x;
using namespace std;
//Să se scrie un program care să determine
// cel mai mare divizor comun
// a două numere naturale citite de la tastatură.
int main()
{ //citim 2 numere a si b
    cout<<"a=";
    cin>>a;
    cout<<"b=";
    cin>>b;
    if(a==0&&b==0)cout<<-1;//daca a si b sunt 0 scriem -1
    r=a%b;//retinem intr-o variabila r restul impartirii
    //lui a la b;
    while(r!=0)//si cat timp acest rest e diferit de 0
    {  //inlocuim pe a cu b si pe b cu restul obtinut
        //si apoi r va lua restul impartirii noului a la
        //noul b
        a=b;
        b=r;
        r=a%b;
    }
    //aici ti-am salvat in x pe b,pentru ca b este ultimul
    //rest si automat b va fi cmmdc al celor 2 numere
    x=b;
    cout<<"Cmmdc este: "<<x;//si scriem x;
}

#include <iostream>using namespace std;
int n,inv,c,i,D,d;
int main()
{
    cout<<"n=";
    cin>>n;
    inv=0;// variabila inv se va initializa cu 0 si va retine
    // inversul lui n
    while(n!=0)
    {
        //in c memoram cifrele lui n,apoi facem inversul
        //sau si apoi taiem din n;
        c=n%10;
        inv=inv*10+c;
        n/=10;
    }
    cout<<"inv este "<<inv<<endl;//afisam inversul,pentru a
    //vedea care este
    cout<<"Divizorii lui inv sunt: "<<endl;
    for(d=1; d<=inv; d++)
    //aici am folosit for,un for care
    {
        //porneste de la primul divizor,1,pana la el insusi,ca
        //sa numaram toti divizorii
        if(inv%d==0)
        {  //D creste de fiecare data cand am gasit un divizor
            D++;
            cout<<d<<" , ";//si aici il si afisam,sa vedem
            //care este
        }
    } //la final il scriem pe D,numarul de div al inv lui n
    cout<<endl<<"Numarul de diviz al inv lui n este "<<D;
}
#include <iostream>using namespace std;
int n,C,d,ok;
int main()
{
    cout<<"n=";//citim pe n
    cin>>n;
    ok=0;//initializam o variabila ok cu 0,presupunand astfel
    //ca nu avem divizori pari;
    for(d=2; d<=n; d++)//cu un for de la primul numar par,2,
        //pana la n,intrucat  n poate fi numar par
        if(n%d==0&&d%2==0)//if se imparte la d si e par
        { //ok devine 1(true)
            ok=1;
            cout<<d<<" , ";//il si scriem
            C++;//iar variabila in care memoram numarul de
   // divizori pari,C,creste
        }
    if(ok==0)cout<<"Nu avem divizori pari";//if ok=0,adica
    //nu avem diviz pari afisam mesaj
    else//altfel scriem numarul de divizori pari
        cout<<endl<<"Numarul de divizori pari ai lui "<<n<<" este: "<<C;
}
#include <iostream>using namespace std;
int a[100],n,i,ok,inv,c;
int main()
{
    cout<<"n=";
    cin>>n;//citim numarul de elemente al vectorului,n,apoi
    //creeam vectorul;
    for(i=1; i<=n; i++)
    {
        cout<<"a["<<i<<"]=";
        cin>>a[i];
    }
    inv=0;//initializam variabila inv cu 0,care va retine
    // inversul primului element
    while(a[1]!=0)//cat timp primul e dif de 0
    {
        //ii scoatem cifrele si le inversam;
        c=a[1]%10;
        inv=inv*10+c;
        a[1]/=10;
    }//il scriem pe invers,sa vedem care este
    cout<<"Inversul primului element este: "<<inv<<endl;
    ok=0;//acum presupunem ca nu gasim elemente egale
    //cu inversul primului;
    for(i=2; i<=n; i++)//cu un for care pleaca de la al
        //doilea element pana la n testam daca apare
        if(inv==a[i])ok=1;//daca apare ok devine 1(adevarat)
        else i++;//altfel trece la urmatoarea valoare din
    //vector
    if(ok==0)cout<<"NU";//acum afisam mesajele corespunzatoare
    else cout<<"DA";
}
#include <iostream>using namespace std;
int a,b,c,r;
int main()
{
    cout<<"a=";//citim 2 numere a si b
    cin>>a;
    cout<<"b=";
    cin>>b;
    r=a%b;//memoram in variabila r restul impartirii lui a la b
    while(r!=0)//cat timp restul e dif de 0
    {
        //a va primi pe b iar b va primi restul impartirii
        a=b;
        b=r;
        r=a%b;//aici r va primi restului impartirii noului
        //a la noul b
    }
    if(b==1)//daca cel mai mare divizor comun al celor
        //2 numere este 1 atunci afisam mesajul PIe altfel NOPIE
        cout<<"PIE";
    else cout<<"NOPIE";
}
#include <iostream>using namespace std;
int n,S,d;
int main()
{
    cout<<"n=";//citim pe n
    cin>>n;
    cout<<"Divizorii impari sunt= ";
    for(d=1; d<=n; d++)//cu un for de la d=1 pana la n
        //verificam daca avem divizori impari
        if(n%d==0&&d%2==1)
        {
            //daca avem il afisam si il adunam la suma
            cout<<d<<" , ";
            S+=d;
        }    //afisam suma diviz impari
    cout<<"Suma div impari este= "<<S;
}
#include <iostream>
#include <math.h>
using namespace std;
int a,b,n,ok,d,i,aux;
int main()
{
    cout<<"a=";//citim capetele intervalului,a si b
    cin>>a;
    cout<<"b=";
    cin>>b;
    if(a>b)//daca a e mai mare decat b le interschimbam
    { //conform regulii paharelor
        aux=a;
        a=b;
        b=aux;
    }
    cout<<"Numerele prime din intervalul dat: ";
    for(i=a; i<=b; i++)//cu un for de la a la b
        //verificam daca avem numere prime in interval
    {
        ok=1;//presupunem ca e numar prim
        if(i==1||i==0)ok=0;//if i e 1 sau 0 ok devine 0,pentru ca
        //0 si 1 nu sunt nr prime
        else for(d=2; d<=sqrt(i); d++)//altfel cu
            //un d care merge de la 2 la radical din i
            //ps:am folosit pana la radical din i pentru ca e mult mai rapid asa
            //decat daca am face pana la jumatate
                if(i%d==0)ok=0;
        if(ok==1)//daca ok=0 scriem numarul prim si crestem n-ul;
        {
            cout<<i<<" , ";
            n++;
        }
    }
    //afisam numarul de elemente prime
    cout<<endl<<"Numarul de numere prime din acest interval este "<<n;
}

Alte întrebări interesante