Sunteți pe pagina 1din 7

1.

#include <iostream>
/* Se dau n numere naturale.
Sa se determine cifrele care nu apar in scrierea numerelor
*/
using namespace std;

int v[10]; // vector caracteristic: v[i]=1 daca i apare in scriere


// si v[i]=0 daca i nu apare in scriere
int a[100], n;

void citire()
{ cout<<"Dati numarul elementelor="; cin>>n;
for (int i=0; i<n; i++)
{ cout<<"a["<<i<<"]="; cin>>a[i]; }
}

void afisare ()
{ for (int i=0; i<n;i++)
cout<<a[i]<<' ';
}

void setare_cifre (int x)


{ if(x==0) { v[0]++; return; }
while (x>0)
{ v[x%10]++;
x=x/10;
}
}

void cifre_lipsa ()
{ int ok=0;
for (int i=0; i<=9; i++)
if(v[i]==0) {cout<<i<<" "; ok=1;}
if (!ok) cout<<"nu sunt cifre lipsa";
}

void numar_aparitiecifre ()
{
for (int i=0; i<=9; i++)
if (v[i]==1) cout<<i <<" apare o data"<<endl;
else cout<<i<<" apare de "<<v[i]<<" ori;"<<endl;
}
int main()
{
citire ();
for (int i=0; i<n; i++)
setare_cifre (a[i]);
afisare ();
cout<<endl;
cout<<"cifrele lipsa ale sirului sunt:";
cifre_lipsa();
cout<<endl;
numar_aparitiecifre();
return 0;
}

2.
#include <iostream>
/*
sa se scrie o functie care sa verificare daca un numar dat ca argument
este numar prim
*/
using namespace std;
int prim (int x)
{
if (x==0 ||x==1) return 0;
if(x==2) return 1;
if (x%2==0) return 0; //(!(x%2)) <==> (x%2==0)
for (int d=3; d*d<=x; d=d+2)
if (x%d==0) return 0;
return 1;

}
int main()
{
int x;
cout<<"x="; cin>>x;
if (prim(x)) cout<<"este prim";
else cout<<"nu este prim";

return 0;
}
3.
#include <iostream>
/*
Conjectura lui Goldbach
orice numar natural par>2 se poate scrie ca suma de doua numere prime
sa se elaboreze o functie care afiseaza toate modalitatile de scriere
a unui numar par
in suma de 2 numere prime
*/
using namespace std;
int prim (int x)
{
if (x==0 || x==1) return 0;
if(x==2) return 1;
if(x%2==0) return 0;
for (int d=3; d*d<=x; d=d+2)
if (x%d==0) return 0;
return 1;
}
void Goldbach (int n)
{
int p;
if (n==4) {cout <<"4=2+2"<<endl; return;}
for(p=3; p<=n/2; p=p+2 )
if(prim(p) && prim(n-p)) cout<<n<<"="<<p<<"+"<<n-p<<endl;
}
int main()
{
int n;
cout<<"n="; cin>>n;
Goldbach(n);
return 0;
}

4.
#include <iostream>
/*
sa se elaboreze un program pentru afisarea tuturor numerelor de 4
cifre prime cu inversele tot prime
exemplu: 1021 si 1201 sunt ambele prime
*/
using namespace std;
int prim (int x)
{
if (x==0 ||x==1) return 0;
if(x==2) return 1;
if (x%2==0) return 0; //(!(x%2)) == (x%2==0)
for (int d=3; d*d<=x; d=d+2)
if (x%d==0) return 0;
return 1;

}
int oglindit (int x)
{/*
x=723
m=0;
m=m*10+x%10=0+3=3;
x=x/10=72
m=m*10+x%10=3*10+2=32
x=x/10=7
m=m*10+x%10=32*10+7=327
x=0;
*/
int m=0;
while (x>0)
{
m=m*10+x%10;
x=x/10;
}
return m;
}
int main()
{
for (int i=1001; i<=9999; i=i+2)
{
if (prim (i) &&prim (oglindit (i))) cout<<i<<" ";
}
return 0;
}
5.
#include <iostream>
/*
un numar este aproape prim daca se poate scrie ca produs de doua
numere prime distincte
sa se elaboreze o functie care verifica daca un numar este aproape
prim
21=3*7
25=5*5 nu este aproape prim
*/
using namespace std;
int prim (int x)
{
if (x==0 || x==1) return 0;
if(x==2) return 1;
if(x%2==0) return 0;
for (int d=3; d*d<=x; d=d+2)
if (x%d==0) return 0;
return 1;
}
int aproape_prim (int n)
{
int d=3;
if(n>4 && n%2==0 && prim (n/2)) return 1;
while (d*d<n)
{
if (n%d==0 && prim(d) &&prim(n/d)) return 1;
d+=2;
}
return 0;
}
int main()
{
int n; cout<<"n="; cin>>n;
if (aproape_prim(n)) cout<<"este aproape prim";
else cout<<"nu este";
return 0;
}
6.
#include <iostream>
/*
cel mai mic numar prim mai mare decat n
*/
using namespace std;
int prim (int x)
{
if (x==0 || x==1) return 0;
if(x==2) return 1;
if(x%2==0) return 0;
for (int d=3; d*d<=x; d=d+2)
if (x%d==0) return 0;
return 1;
}
int main()
{
int n,cn;
cout<<"n="; cin>>n;
cn=n+1;
while (!prim(cn)) cn++;
cout<<cn;

return 0;
}

7.
#include <iostream>

/* sa se completeze vectorul v cu 100 de componente nr nat,


cu primele 100 de numare prime */

using namespace std;


int prim (int x)
{
if (x==0 || x==1) return 0;
if(x==2) return 1;
if(x%2==0) return 0;
for (int d=3; d*d<=x; d=d+2)
if (x%d==0) return 0;
return 1;
}
void afisare (int v[])
{
for (int i=0; i<100; i++)
cout<<v[i]<<' ';
}

int main()
{
int v[100], nr=0,x=2;
while (nr<100)
{
if (prim(x))
{
v[nr]=x;
nr++;
}
x++;}
afisare (v);
return 0;
}

S-ar putea să vă placă și