<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=10_2018_Lectia3</id>
	<title>10 2018 Lectia3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=10_2018_Lectia3"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=10_2018_Lectia3&amp;action=history"/>
	<updated>2026-04-12T21:36:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=10_2018_Lectia3&amp;diff=18316&amp;oldid=prev</id>
		<title>Bella: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=10_2018_Lectia3&amp;diff=18316&amp;oldid=prev"/>
		<updated>2024-01-14T14:39:49Z</updated>

		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://www.algopedia.ro/wiki/index.php?title=10_2018_Lectia3&amp;amp;diff=18316&amp;amp;oldid=17980&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=10_2018_Lectia3&amp;diff=17980&amp;oldid=prev</id>
		<title>Bella: /* Afisarea sumei divizorilor unui numar */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=10_2018_Lectia3&amp;diff=17980&amp;oldid=prev"/>
		<updated>2020-10-08T15:24:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Afisarea sumei divizorilor unui numar&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Subprograme =&lt;br /&gt;
== Studiu de caz - modularizarea unui program ==&lt;br /&gt;
=== De ce avem nevoie de subprograme ===&lt;br /&gt;
# pentru a evita scrierea de cod repetitiv; definirea unui subprogram ne permite executarea acestuia de mai multe ori, fara a scrie acelasi cod de in mod repetat; &lt;br /&gt;
# decompunerea problemei in subprobleme - facem asta deoarece subproblemele sunt parti de cod mai simplu de scris, de testat, de verificat si de inteles (in en: decomposition- medoda de a imparti problema in subprobleme).&lt;br /&gt;
# Modularizarea usureaza munca in echipa&lt;br /&gt;
Esista 2 modalitati de descompunere: &lt;br /&gt;
* top-down - when you try to define the most general functions first and then you divide them into simpler and more specialized ones)&lt;br /&gt;
* bottom up - when you start your work by creating a set of narrowly defined and highly specialized functions, and then assembling them into more complex structures&lt;br /&gt;
&lt;br /&gt;
== Tipuri de subprograme ==&lt;br /&gt;
Clasificare dupa autor&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Functii predefinite&amp;#039;&amp;#039;&amp;#039; sau functii de biblioteca - sunt functii scrise de altcineva disponibile in bibliotecile mediului de programare &lt;br /&gt;
** ex1: in biblioteca cmath gasim functia &amp;#039;&amp;#039;&amp;#039;abs&amp;#039;&amp;#039;&amp;#039; care calculeaza val absoluta a numar, functia sqrt care calculeaza radicalul unui numar, etc&lt;br /&gt;
** ex2: in biblioteca cstring casim functii care prelucreaza siruri de caractere precum functia &amp;#039;&amp;#039;&amp;#039;strlen&amp;#039;&amp;#039;&amp;#039; care calculeaza lungimea unui sir, etc.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Functii definite de utilizator&amp;#039;&amp;#039;&amp;#039; - functii pe care le putem defini si utiliza in programul nostru&lt;br /&gt;
&lt;br /&gt;
Subprogramele pot fi de două tipuri:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;funcții&amp;#039;&amp;#039;&amp;#039; – subprograme care determină un anumit rezultat, o anumită valoare, pornind de la anumite date de intrare. Spunem că valoarea este returnată de către funcție, iar aceasta va fi apelată ca operand într-o expresie, valoarea operandului în expresie fiind de fapt valoarea rezultatului funcției.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
int catecifre( int n ){&lt;br /&gt;
  int cnt = 0;&lt;br /&gt;
  while ( n ){&lt;br /&gt;
    cnt ++;&lt;br /&gt;
    n/=10;&lt;br /&gt;
  }&lt;br /&gt;
  return cnt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    int e = 2034;&lt;br /&gt;
    cout &amp;lt;&amp;lt; catecifre ( e );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;proceduri&amp;#039;&amp;#039;&amp;#039; – subprograme care se folosesc într-o instrucțiune de sine stătătoare, nu într-o expresie. Ele îndeplinesc o sarcină, au un efect și nu returnează un rezultat. De exemplu, citirea unor variabile, afișarea unor valori, transformarea unor date, etc.&lt;br /&gt;
Ex: Afisare primelor n numere naturale impare&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
void afisare(  int n ){&lt;br /&gt;
  int i = 1;&lt;br /&gt;
  while ( i &amp;lt;= n ){&lt;br /&gt;
    cout &amp;lt;&amp;lt; 2 * i - 1 &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    i ++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    int main(){&lt;br /&gt;
    int n = 5;&lt;br /&gt;
    afisare( n );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transmiterea parametrilor ==&lt;br /&gt;
* prin valoare&lt;br /&gt;
* prin referinta (diferenta dintre c/c++)&lt;br /&gt;
&lt;br /&gt;
== Aplicatii subprograme ==&lt;br /&gt;
In acest laboator ne propunem sa recapitulam algoritimi studiati in anul anterior si totodata sa ii implementam sub forma de subprograme. Vom recapitula:&lt;br /&gt;
* algoritmilor elementari &lt;br /&gt;
** Prelucrarea cifrelor unui numar (numar palindrom)&lt;br /&gt;
** Algoritmi de divizibilitate ( cmmdc, cmmmc, primalitate, descompunere in factori primi&lt;br /&gt;
==== Numere palindrom ====&lt;br /&gt;
Algoritmul clasic verifică dacă numărul este egal cu răsturnatul său:&lt;br /&gt;
Avem şi o metodă mai apropiată de cea originală, în care răsturnăm numărul numai pînă la jumate:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  long long n, r;&lt;br /&gt;
  scanf(&amp;quot;%lld&amp;quot;, &amp;amp;n );&lt;br /&gt;
&lt;br /&gt;
  if ( n &amp;gt; 0 &amp;amp;&amp;amp; n % 10 == 0 )&lt;br /&gt;
    printf(&amp;quot;NU\n&amp;quot;);&lt;br /&gt;
  else {&lt;br /&gt;
    r = 0;&lt;br /&gt;
    while( n &amp;gt; r ){&lt;br /&gt;
      r = r * 10 + n % 10;&lt;br /&gt;
      n = n / 10;&lt;br /&gt;
    }&lt;br /&gt;
    // cand numarul are un numar par de cifre testam daca p == r&lt;br /&gt;
    // cand numarul are un numar impar de cifre testam daca p == r / 10&lt;br /&gt;
    if( n == r || n ==(r /10))&lt;br /&gt;
      printf(&amp;quot;DA\n&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      printf(&amp;quot;NU\n&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Metoda: Rasturnam numarul pana la jumatate; Cum obtinem cele 2 jumatati? &lt;br /&gt;
Vom muta in r cifre din n pana cand r devine mai mare ca n. Atentie la numerele cu zerouri la coada. Ex: 5500 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
int pali( long long n ){&lt;br /&gt;
  int r;&lt;br /&gt;
  if ( n &amp;gt; 0  &amp;amp;&amp;amp; n % 10 == 0 )&lt;br /&gt;
    return 0;&lt;br /&gt;
  r = 0;&lt;br /&gt;
  while ( n&amp;gt; r ) {&lt;br /&gt;
    r = r * 10 + n % 10;&lt;br /&gt;
    n = n / 10;&lt;br /&gt;
  }&lt;br /&gt;
  if ( n == r || n == ( r / 10 ) )&lt;br /&gt;
    return 1;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
  long long n;&lt;br /&gt;
  scanf( &amp;quot;%lld&amp;quot;, &amp;amp;n );&lt;br /&gt;
  if( pali(n) ) &lt;br /&gt;
    printf( &amp;quot;este palindrom&amp;quot; );&lt;br /&gt;
  else&lt;br /&gt;
    printf( &amp;quot;nu este palindrom&amp;quot; );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Calculul cmmdc-ului===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
unsigned int cmmdc( unsigned int a, unsigned int b ){&lt;br /&gt;
  unsigned int r;&lt;br /&gt;
  while ( b &amp;gt; 0 ){&lt;br /&gt;
    r = a % b;&lt;br /&gt;
    a = b;&lt;br /&gt;
    b = r;&lt;br /&gt;
  }&lt;br /&gt;
return a;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  unsigned int a, b;&lt;br /&gt;
  scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;a, &amp;amp;b );&lt;br /&gt;
  printf( &amp;quot;%u&amp;quot;, cmmdc( a, b ) );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezolvati in clasa:&lt;br /&gt;
* problema [http://varena.ro/problema/plaja2 plaja2]&lt;br /&gt;
* Scrieti un program similar care sa calculeze cmmmc-ul a doua numere&lt;br /&gt;
&lt;br /&gt;
===Calculul cmmmc-ului===&lt;br /&gt;
*[http://varena.ro/problema/plaja1 Plaja1] Problema se reduce la a calcula cmmmc a n numere.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include&amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
//prototipurile functilor pe care le vom defini.&lt;br /&gt;
int cmmdc(int ,int );&lt;br /&gt;
int cmmmc(int ,int );&lt;br /&gt;
//definirea functiilor anuntate prin prototipuri&lt;br /&gt;
int cmmdc(int a,int b){&lt;br /&gt;
    int r;&lt;br /&gt;
    while(b&amp;gt;0){&lt;br /&gt;
        r=a%b;&lt;br /&gt;
        a=b;&lt;br /&gt;
        b=r;&lt;br /&gt;
    }&lt;br /&gt;
    return a;&lt;br /&gt;
}&lt;br /&gt;
int cmmmc(int a,int b){&lt;br /&gt;
    return (a*b)/cmmdc(a,b);&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
    ifstream f(&amp;quot;plaja1.in&amp;quot;);&lt;br /&gt;
    ofstream g(&amp;quot;plaja1.out&amp;quot;);&lt;br /&gt;
    int n,i,x,y;&lt;br /&gt;
    f&amp;gt;&amp;gt;n;&lt;br /&gt;
    f&amp;gt;&amp;gt;x;               //citim o prima valoare din sir&lt;br /&gt;
    for(i=2;i&amp;lt;=n;i++){&lt;br /&gt;
        f&amp;gt;&amp;gt;y;           //citim o noua valoare din sir&lt;br /&gt;
        x=cmmmc(x,y);   //x va fi rescris cu valoarea cmmmc-ului dinte x si y.&lt;br /&gt;
    }&lt;br /&gt;
    g&amp;lt;&amp;lt;x;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De retinut ca x si y sunt parametrii transmisi prin valoare, ca urmare functia cmmmc nu va putea modifica valoarea acestora.&lt;br /&gt;
&lt;br /&gt;
==== Afisarea tuturor divizorilor unui numar ====&lt;br /&gt;
Se citeste un numar natural n. Sa se afiseze toti divizorii acestuia in ordine crescatoare: &lt;br /&gt;
Ex: pentru n = 12 se vor afisa: 1 2 3 4 6 12&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, d;&lt;br /&gt;
&lt;br /&gt;
  cin &amp;gt;&amp;gt; n;&lt;br /&gt;
  // afisam mai intai divizorii de pana in radical&lt;br /&gt;
  // vom parcurge deci sqrt(n) numere&lt;br /&gt;
  d = 1;&lt;br /&gt;
  while( d * d &amp;lt; n ){&lt;br /&gt;
    if( n % d == 0 )&lt;br /&gt;
      cout &amp;lt;&amp;lt; d &amp;lt;&amp;lt; &amp;#039;\n&amp;#039;;&lt;br /&gt;
    d = d + 1;&lt;br /&gt;
  }&lt;br /&gt;
  // afisam divizorii de dupa radical&lt;br /&gt;
  // parcurgem divizorii de pana in radical in ordine inversa&lt;br /&gt;
  // si afisam perechea fiecaruia de dupa radical&lt;br /&gt;
  // vom parcurge deci tot sqrt(n) numere&lt;br /&gt;
  d = sqrt (n);&lt;br /&gt;
  while( d &amp;gt;= 1 ){&lt;br /&gt;
    if( n % d == 0 )&lt;br /&gt;
      cout &amp;lt;&amp;lt; n / d &amp;lt;&amp;lt; &amp;#039;\n&amp;#039;;&lt;br /&gt;
    d = d - 1;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scrieti in clasa un program similar care utilizeaza un subprogram pentru afisarea divizorilor&lt;br /&gt;
&lt;br /&gt;
 Folosind functii:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void afisare_divizori ( int n ){&lt;br /&gt;
  // afisam mai intai divizorii de pana in radical&lt;br /&gt;
  // vom parcurge deci sqrt(n) numere&lt;br /&gt;
  int d = 1;&lt;br /&gt;
  while( d * d &amp;lt; n ){&lt;br /&gt;
    if( n % d == 0 )&lt;br /&gt;
      cout &amp;lt;&amp;lt; d &amp;lt;&amp;lt;&amp;#039; &amp;#039;;&lt;br /&gt;
    d = d + 1;&lt;br /&gt;
  }&lt;br /&gt;
  // afisam divizorii de dupa radical&lt;br /&gt;
  // parcurgem divizorii de pana in radical in ordine inversa&lt;br /&gt;
  // si afisam perechea fiecaruia de dupa radical&lt;br /&gt;
  // vom parcurge deci tot sqrt(n) numere&lt;br /&gt;
  d = sqrt ( n );&lt;br /&gt;
  while( d &amp;gt;= 1 ){&lt;br /&gt;
    if( n % d == 0 )&lt;br /&gt;
      cout &amp;lt;&amp;lt; n / d &amp;lt;&amp;lt; &amp;#039; &amp;#039;;&lt;br /&gt;
    d = d - 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
  int n;&lt;br /&gt;
&lt;br /&gt;
  cin &amp;gt;&amp;gt; n;&lt;br /&gt;
  afisare_divizori (n);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Afisarea sumei divizorilor unui numar ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int suma_div(int n){&lt;br /&gt;
  int d, s;&lt;br /&gt;
  s = n+1;&lt;br /&gt;
  d=2;&lt;br /&gt;
  while ( d * d &amp;lt; n ) {&lt;br /&gt;
    if ( n % d == 0 )&lt;br /&gt;
      s = s + d + n / d;&lt;br /&gt;
    d = d + 1;&lt;br /&gt;
  }&lt;br /&gt;
  if( d * d == n)&lt;br /&gt;
    s = s + d;&lt;br /&gt;
  return s;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  int n;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  printf( &amp;quot;Suma Divizorilor lui %d este: %d&amp;quot;, n, suma_div(n) );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Descompunerea in factori primi ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
int n, div, exp;&lt;br /&gt;
&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;n);&lt;br /&gt;
  div = 2;        //Incepem cautarea factorilor primi de la primul numar prim&lt;br /&gt;
  while( div * div &amp;lt;= n ){//Cautam factorii primi pana la radicalul lui n&lt;br /&gt;
    exp = 0;&lt;br /&gt;
    while( n % div == 0 ) {&lt;br /&gt;
      n /= div;&lt;br /&gt;
      exp ++;&lt;br /&gt;
    }&lt;br /&gt;
    if( exp &amp;gt; 0 )&lt;br /&gt;
      printf(&amp;quot;%d^%d\n&amp;quot;, div, exp );&lt;br /&gt;
    div ++;&lt;br /&gt;
  }  &lt;br /&gt;
  // daca n mai contine un factor, el este un numar prim la puterea unu&lt;br /&gt;
  if( n &amp;gt; 1 )&lt;br /&gt;
    printf(&amp;quot;%d^1\n&amp;quot;, n );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Primalitate ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main() {&lt;br /&gt;
  int n, d;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  d = 2;&lt;br /&gt;
  while ( d*d &amp;lt;= n &amp;amp;&amp;amp; n % d &amp;gt; 0 )&lt;br /&gt;
    d = d + 1;&lt;br /&gt;
  if ( d*d &amp;gt; n )&lt;br /&gt;
    printf( &amp;quot;%d este prim\n&amp;quot;, n );&lt;br /&gt;
  else&lt;br /&gt;
    printf( &amp;quot;%d nu este prim\n&amp;quot;, n );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Cu functii:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int prim ( int n ) {&lt;br /&gt;
  int d;&lt;br /&gt;
  d = 2;&lt;br /&gt;
  while ( d * d &amp;lt;= n &amp;amp;&amp;amp; n % d &amp;gt; 0 )&lt;br /&gt;
    d = d + 1;&lt;br /&gt;
  if ( d * d &amp;gt; n )&lt;br /&gt;
    return 1;&lt;br /&gt;
  else&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  int n;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  if(prim(n))&lt;br /&gt;
    printf( &amp;quot;%d este prim\n&amp;quot;, n );&lt;br /&gt;
  else&lt;br /&gt;
    printf( &amp;quot;%d  nu este prim\n&amp;quot;, n );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicatie: Afisarea tuturor numerelor prime dintr-un sir de  n valori&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int prim (int n){&lt;br /&gt;
  int d;&lt;br /&gt;
  d = 2;&lt;br /&gt;
  while ( d * d &amp;lt;= n &amp;amp;&amp;amp; n % d &amp;gt; 0 )&lt;br /&gt;
    d = d + 1;&lt;br /&gt;
  if ( d * d &amp;gt; n )&lt;br /&gt;
    return 1;&lt;br /&gt;
  else&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  int n, i, nr, contor;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  contor=0;&lt;br /&gt;
  for( i = 0; i &amp;lt; n; i++ ){&lt;br /&gt;
    scanf( &amp;quot;%d&amp;quot;, &amp;amp;nr );&lt;br /&gt;
    if(prim(nr) == 1)&lt;br /&gt;
      contor++;&lt;br /&gt;
  }&lt;br /&gt;
  if(contor != 0)&lt;br /&gt;
    printf( &amp;quot;in sir sunt %d  numere prime\n&amp;quot;, contor );&lt;br /&gt;
  else&lt;br /&gt;
    printf( &amp;quot;in sir  nu sunt numere prime\n&amp;quot; );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ciurul lui Eratostene ====&lt;br /&gt;
O metoda mai rapida de a rezolva problema de mai sus ar fi sa contruim un tablou unidimensional in care sa memoram pentru fiecare numar, daca este prim sau nu.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
char ciur[2000000];&lt;br /&gt;
void creare_ciur ( int n ){&lt;br /&gt;
  int d, i;&lt;br /&gt;
  for ( d = 2; d * d &amp;lt;= n; d ++ )&lt;br /&gt;
    if ( ciur[d] == 0 ) // daca d este prim&lt;br /&gt;
      for ( i = d * d; i &amp;lt;= n; i = i + d ) // vom marca numerele din d in d&lt;br /&gt;
        ciur[i] = 1;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  int n, i;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  creare_ciur(n);&lt;br /&gt;
  for( i = 2; i &amp;lt;= n; i++ )&lt;br /&gt;
    if( ciur[i] == 0 )&lt;br /&gt;
      printf( &amp;quot; %d  &amp;quot;, ciur[i] );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Sortarea a unui sir de n numere ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
void citire( int v[], int &amp;amp;n ){&lt;br /&gt;
  int i;&lt;br /&gt;
  cin &amp;gt;&amp;gt; n;&lt;br /&gt;
  i = 0;&lt;br /&gt;
  while ( i&amp;lt; n ){&lt;br /&gt;
    cin &amp;gt;&amp;gt; v[i];&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void afisare( int v[], int n ){&lt;br /&gt;
  int i;&lt;br /&gt;
  i = 0;&lt;br /&gt;
  while ( i &amp;lt; n ){&lt;br /&gt;
    cout &amp;lt;&amp;lt; v[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void myswap ( int &amp;amp;a, int &amp;amp;b ){&lt;br /&gt;
  int aux = a;&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = aux;&lt;br /&gt;
}&lt;br /&gt;
void sortare( int v[], int n ){&lt;br /&gt;
  int i, j;&lt;br /&gt;
  for ( i = 0; i &amp;lt; n - 1; i ++ )&lt;br /&gt;
    for ( j = i + 1; j &amp;lt; n; j ++ )&lt;br /&gt;
      if ( v[i] &amp;gt; v[j] )&lt;br /&gt;
        myswap( v[i], v[j] );&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
    int a[100], n;&lt;br /&gt;
    citire( a, n );&lt;br /&gt;
    sortare ( a, n );&lt;br /&gt;
    afisare( a, n );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interclasare vectori ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
void citire(FILE *f, int v[], int *n){&lt;br /&gt;
  int i;&lt;br /&gt;
  fscanf( f, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  for ( i = 0; i &amp;lt; (*n); i++ )&lt;br /&gt;
    fscanf( f, &amp;quot;%d&amp;quot;, &amp;amp;v[i] );&lt;br /&gt;
}&lt;br /&gt;
void scrie( FILE *f, int v[], int n ) {&lt;br /&gt;
  int i;&lt;br /&gt;
  for ( i = 0; i &amp;lt; n; i++ )&lt;br /&gt;
    fprintf( f, &amp;quot;%d &amp;quot;, v[i] );&lt;br /&gt;
  fprintf( f, &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
void interclasare(int v1[], int n1, int v2[], int n2, int v3[], int *n3 ){&lt;br /&gt;
  int i1, i2, i3;&lt;br /&gt;
  i1 = i2 = i3 = 0;&lt;br /&gt;
  while ( i1 &amp;lt; n1 &amp;amp;&amp;amp; i2 &amp;lt; n2 )&lt;br /&gt;
    if ( v1[i1] &amp;lt; v2[i2] )&lt;br /&gt;
      v3[i3++] = v1[i1++];&lt;br /&gt;
    else&lt;br /&gt;
      v3[i3++] = v2[i2++];&lt;br /&gt;
  &lt;br /&gt;
  while ( i1 &amp;lt; n1 ) &lt;br /&gt;
    v3[i3++] = v1[i1++];&lt;br /&gt;
    &lt;br /&gt;
  while ( i2 &amp;lt; n2 ) &lt;br /&gt;
    v3[i3++] = v2[i2++];&lt;br /&gt;
      &lt;br /&gt;
  *n3 = n1 + n2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    int a[100], b[100], c[100], na, nb, nc;&lt;br /&gt;
    FILE *fin =fopen( &amp;quot;interclasare.in&amp;quot;,&amp;quot;r&amp;quot; );&lt;br /&gt;
    citire(fin, a, &amp;amp;na);&lt;br /&gt;
    citire(fin, b, &amp;amp;nb);&lt;br /&gt;
    FILE *fout = fopen (&amp;quot;interclasare.out&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
    fclose( fin );&lt;br /&gt;
    interclasare( a, na, b, nb, c, &amp;amp;nc );&lt;br /&gt;
    fout = fopen( &amp;quot;interclasare.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
    scrie( fout,  c, nc);&lt;br /&gt;
    fclose( fout );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>