<?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=Cerc_6_2018_lectia_3</id>
	<title>Cerc 6 2018 lectia 3 - 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=Cerc_6_2018_lectia_3"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Cerc_6_2018_lectia_3&amp;action=history"/>
	<updated>2026-04-15T15:48:04Z</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=Cerc_6_2018_lectia_3&amp;diff=15671&amp;oldid=prev</id>
		<title>Bella: /* Alte probleme similare */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Cerc_6_2018_lectia_3&amp;diff=15671&amp;oldid=prev"/>
		<updated>2018-10-13T23:09:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Alte probleme similare&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== TEMA Rezolvari==&lt;br /&gt;
=== Descompunere in factori primi si nr divizoril ===&lt;br /&gt;
* [http://varena.ro/problema/nenepatrat nepatrat][http://isa.algopedia.ro/wiki/index.php/nenepatrat Rez]&lt;br /&gt;
* [https://www.infoarena.ro/problema/divmul divmul][http://isa.algopedia.ro/wiki/index.php/divmul Rez]&lt;br /&gt;
&lt;br /&gt;
=== Ciur ===&lt;br /&gt;
* [http://varena.ro/problema/paisprezece paisprezece] [http://isa.algopedia.ro/wiki/index.php/paisprezece Rez]&lt;br /&gt;
* [https://infoarena.ro/problema/prim prim][http://isa.algopedia.ro/wiki/index.php/prim Rez]&lt;br /&gt;
== Nenepatrat ==&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
fie n = d1^p1* ... * dn^pn&lt;br /&gt;
Nr de divizori ai lui n: nrdiv = (p1+1)*..*(pn+n)&lt;br /&gt;
Nr de divizori ai lui n^2: nrdivp = (2p1+1)*..*(2pn+n)&lt;br /&gt;
Nr de divizori ai lui n^2 mai mici decat n, inclusiv n: (nrdivp+1)/2&lt;br /&gt;
(numarul lde divizori ai unui patrat perfect este impar)&lt;br /&gt;
Din acestia vom scadea nr de divizori ai lui n.&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  int d, p, n, nrdiv, nrdivp;&lt;br /&gt;
&lt;br /&gt;
  FILE *fin = fopen( &amp;quot;nenepatrat.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
  FILE *fout = fopen( &amp;quot;nenepatrat.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
  fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n ); &lt;br /&gt;
  &lt;br /&gt;
  //  calculam numar divizori ai lui n si ai lui n^2  &lt;br /&gt;
  d = 2; nrdiv = nrdivp = 1;&lt;br /&gt;
  while ( d * d &amp;lt;= n ) {&lt;br /&gt;
    p = 0;&lt;br /&gt;
    while ( n % d == 0 ) {&lt;br /&gt;
      n /= d;&lt;br /&gt;
      p++;&lt;br /&gt;
    }&lt;br /&gt;
    nrdiv *= p + 1;&lt;br /&gt;
    nrdivp *= 2 * p + 1;&lt;br /&gt;
    d++;&lt;br /&gt;
  }&lt;br /&gt;
  if ( n &amp;gt; 1 ) {&lt;br /&gt;
    nrdiv *= 2;&lt;br /&gt;
    nrdivp *= 3;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  fprintf( fout, &amp;quot;%d\n&amp;quot;, (nrdivp + 1)/ 2 - nrdiv );&lt;br /&gt;
  fclose( fin );&lt;br /&gt;
  fclose( fout );&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;
== Divmul ==&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
nr1 = a * x&lt;br /&gt;
nr2 = b * x;&lt;br /&gt;
y = a * b * x;   //cmmmc&lt;br /&gt;
unde a si b sunt prime intre ele&lt;br /&gt;
a * b = y / x;&lt;br /&gt;
Cate perechi a, b pot avea .&lt;br /&gt;
Daca descompunem  in factori primi pe y/x = d1^p1 * d2^p2 *... *dn^pn,&lt;br /&gt;
fiecare factor va putea aparea doar intr-unul din numerele a, b. Astfel ca&lt;br /&gt;
va avea 2^n posibilitati de a forma pe a.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
int main()&lt;br /&gt;
	&lt;br /&gt;
{&lt;br /&gt;
    FILE *fin, *fout;&lt;br /&gt;
    int t, x, y, num, d;&lt;br /&gt;
    fin = fopen(&amp;quot;divmul.in&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    fscanf(fin, &amp;quot;%d&amp;quot;, &amp;amp;t);&lt;br /&gt;
    fout = fopen(&amp;quot;divmul.out&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
    for (t; t &amp;gt; 0; --t) {&lt;br /&gt;
      fscanf(fin, &amp;quot;%d%d&amp;quot;, &amp;amp;x, &amp;amp;y);&lt;br /&gt;
      if (y % x != 0)&lt;br /&gt;
        fprintf(fout, &amp;quot;0\n&amp;quot;);&lt;br /&gt;
      else {&lt;br /&gt;
        y /= x;&lt;br /&gt;
        num = 1;&lt;br /&gt;
        d = 2;&lt;br /&gt;
        while (d * d &amp;lt;= y) {&lt;br /&gt;
          if (y % d == 0) {&lt;br /&gt;
            while (y % d == 0)&lt;br /&gt;
              y /= d;&lt;br /&gt;
            num *= 2;&lt;br /&gt;
          }&lt;br /&gt;
          ++d;&lt;br /&gt;
        }&lt;br /&gt;
        if (y &amp;gt; 1)&lt;br /&gt;
          num *= 2;	&lt;br /&gt;
        fprintf(fout, &amp;quot;%d\n&amp;quot;, num);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    fclose(fin);&lt;br /&gt;
    fclose(fout);&lt;br /&gt;
    return 0;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prim == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#define MAX 1300000&lt;br /&gt;
 &lt;br /&gt;
char ciur[1 + MAX];&lt;br /&gt;
int prim[100030], con = 0;&lt;br /&gt;
int main(){&lt;br /&gt;
    FILE*fi,*fo;&lt;br /&gt;
    fi=fopen(&amp;quot;prim.in&amp;quot;,&amp;quot;r&amp;quot;);&lt;br /&gt;
    fo=fopen(&amp;quot;prim.out&amp;quot;,&amp;quot;w&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for(int i = 2; i * i &amp;lt;= MAX; i++)&lt;br /&gt;
        if(ciur[i] == 0)&lt;br /&gt;
            for(int j = i * i; j &amp;lt;= MAX; j += i)&lt;br /&gt;
                ciur[j] = 1;&lt;br /&gt;
    for(int i = 2; i &amp;lt;= MAX; i++)&lt;br /&gt;
        if(ciur[i] == 0)&lt;br /&gt;
            prim[con++] = i;&lt;br /&gt;
    &lt;br /&gt;
    int k;&lt;br /&gt;
    fscanf(fi,&amp;quot;%d&amp;quot;, &amp;amp;k);&lt;br /&gt;
    fprintf(fo,&amp;quot;%lld&amp;quot;, 1LL * prim[k] * prim[k]);&lt;br /&gt;
&lt;br /&gt;
    fclose(fi);&lt;br /&gt;
    fclose(fo);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Paisprezece ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#define CMAX 100000&lt;br /&gt;
char ciur[CMAX+1];&lt;br /&gt;
int v[300000], k, d;             //  vector cu nr prime&lt;br /&gt;
int main(){&lt;br /&gt;
  FILE *fin = fopen( &amp;quot;paisprezece.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
  FILE *fout = fopen( &amp;quot;paisprezece.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
  int x, y, i, j, p6, p13, cnt;&lt;br /&gt;
&lt;br /&gt;
  fscanf(fin, &amp;quot;%d%d&amp;quot;, &amp;amp;x, &amp;amp;y );&lt;br /&gt;
&lt;br /&gt;
  v[0] = 2; k = 1;&lt;br /&gt;
  for(d = 3; d &amp;lt;= CMAX; d +=2 )&lt;br /&gt;
    if( ciur[d] == 0 ){                    // daca d e prim&lt;br /&gt;
      v[k++] = d;                          // pun val d in vectorul v&lt;br /&gt;
      for(long long i = 1LL * d * d; i&amp;lt;= CMAX; i = i + 2 * d )  // marchez ca neprime&lt;br /&gt;
        ciur[i] = 1;&lt;br /&gt;
    }&lt;br /&gt;
  cnt = 0;&lt;br /&gt;
  printf(&amp;quot;%d\n&amp;quot;,v[0] );&lt;br /&gt;
&lt;br /&gt;
  // daca n ar fi de forma d^13, nu am putea avea ca d decat pe 2 sau pe 3&lt;br /&gt;
  for(i = 0; i &amp;lt; 2; i++ ){&lt;br /&gt;
    p13 = 1;&lt;br /&gt;
    for(j = 0; j &amp;lt; 13; j++ )&lt;br /&gt;
      p13 *= v[i];&lt;br /&gt;
    if(p13 &amp;gt;= x &amp;amp;&amp;amp; p13 &amp;lt;= y )&lt;br /&gt;
      cnt++;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  i = 0;&lt;br /&gt;
  p6 = v[0]*v[0]*v[0]*v[0]*v[0]*v[0];&lt;br /&gt;
  while ( p6 &amp;lt; y ){&lt;br /&gt;
    j = 0;&lt;br /&gt;
    while ( v[j] * p6 &amp;lt;= y  ){&lt;br /&gt;
      if ( i != j &amp;amp;&amp;amp; v[j]*p6 &amp;gt;= x ){&lt;br /&gt;
          cnt ++;&lt;br /&gt;
          printf(&amp;quot;%d %d %d\n&amp;quot;,v[i], v[j], p6*v[j] );&lt;br /&gt;
        }&lt;br /&gt;
      j++;&lt;br /&gt;
    }&lt;br /&gt;
    i++;&lt;br /&gt;
    p6 = v[i]*v[i]*v[i]*v[i]*v[i]*v[i];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  fprintf(fout,&amp;quot;%d\n&amp;quot;, cnt );&lt;br /&gt;
  fclose(fin);&lt;br /&gt;
  fclose(fout);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// Sol Cella Florescu&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#define MAXN 1000000&lt;br /&gt;
&lt;br /&gt;
char ciur[MAXN + 1] = {0, 1};&lt;br /&gt;
&lt;br /&gt;
inline long long la_putere(long long baza, int exponent) {&lt;br /&gt;
  long long rez = 1LL;&lt;br /&gt;
  int i;&lt;br /&gt;
  for (i = 0; i &amp;lt; exponent; ++i)&lt;br /&gt;
    rez *= baza;&lt;br /&gt;
  return rez;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
inline int numere_speciale_pana_in_N(int n) {&lt;br /&gt;
  int rez, num1, num2, num_prime;&lt;br /&gt;
  num1 = 2;&lt;br /&gt;
  rez = 0;&lt;br /&gt;
  while (la_putere(num1, 13) &amp;lt;= n) {&lt;br /&gt;
    ++rez;&lt;br /&gt;
    ++num1;&lt;br /&gt;
  }&lt;br /&gt;
  num1 = 2;&lt;br /&gt;
  num_prime = 0;&lt;br /&gt;
  for (num2 = 2; num2 &amp;lt;= MAXN; ++num2)&lt;br /&gt;
    num_prime += 1 - ciur[num2];&lt;br /&gt;
  num2 = MAXN;&lt;br /&gt;
  while (num1 &amp;lt;= 19 &amp;amp;&amp;amp; num_prime &amp;gt; 0) {&lt;br /&gt;
    while (la_putere(num1, 6) * num2 &amp;gt; n) {&lt;br /&gt;
      num_prime -= 1 - ciur[num2];&lt;br /&gt;
      --num2;&lt;br /&gt;
    }&lt;br /&gt;
    if (num2 &amp;gt; 1 &amp;amp;&amp;amp; ciur[num1] == 0) {&lt;br /&gt;
      if (num1 &amp;lt;= num2)&lt;br /&gt;
        rez += num_prime - 1;&lt;br /&gt;
      else&lt;br /&gt;
        rez += num_prime;&lt;br /&gt;
    }&lt;br /&gt;
    ++num1;&lt;br /&gt;
  }&lt;br /&gt;
  return rez;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    FILE *fin, *fout;&lt;br /&gt;
    int x, y, i, j;&lt;br /&gt;
    for (i = 2; i * i &amp;lt;= MAXN; ++i)&lt;br /&gt;
      if (ciur[i] == 0)&lt;br /&gt;
        for (j = i * i; j &amp;lt;= MAXN; j += i)&lt;br /&gt;
          ciur[j] = 1;&lt;br /&gt;
    fin = fopen(&amp;quot;paisprezece.in&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    fscanf(fin, &amp;quot;%d%d&amp;quot;, &amp;amp;x, &amp;amp;y);&lt;br /&gt;
    fclose(fin);&lt;br /&gt;
    fout = fopen(&amp;quot;paisprezece.out&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
    fprintf(fout, &amp;quot;%d\n&amp;quot;, numere_speciale_pana_in_N(y) - numere_speciale_pana_in_N(x - 1));&lt;br /&gt;
    fclose(fout);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
//Solutie Matei T.&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#define MAX_PRIM 1000000//aproximativ cel mai mare numar prim pe care il putem avea&lt;br /&gt;
#define MAX_PRIM_6 19//cel mai mare nr prim care ridicat la puterea 6 nu depaseste y&lt;br /&gt;
#define MAX_PRIM_13 3//-------------------//----------------------- 13 nu depaseste y&lt;br /&gt;
#define NR_PRIME 10000 //nr de numere prime&lt;br /&gt;
&lt;br /&gt;
char ciur[ 1 + MAX_PRIM ];&lt;br /&gt;
int prime[ NR_PRIME ];&lt;br /&gt;
&lt;br /&gt;
//calculam o putere in timp logaritmic&lt;br /&gt;
int putere( int baza , int exp , int acum ) {&lt;br /&gt;
  if( exp == 0 )&lt;br /&gt;
    return acum;&lt;br /&gt;
  else if( exp % 2 == 1 )&lt;br /&gt;
    return putere( baza * baza , exp / 2 , acum * baza );&lt;br /&gt;
  else&lt;br /&gt;
    return putere( baza * baza , exp / 2 , acum );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  int i , d , j , x , y , solutii , nr , nPr;&lt;br /&gt;
  j = 0;&lt;br /&gt;
  //folosim un ciur pentru 8 numere prime&lt;br /&gt;
  for( d = 2 ; d &amp;lt;= MAX_PRIM ; d++ )&lt;br /&gt;
    if( ciur[ d ] == 0 ) {&lt;br /&gt;
      prime[ j ] = d;&lt;br /&gt;
      j++;&lt;br /&gt;
      for( i = 2 * d ; i &amp;lt;= MAX_PRIM ; i = i + d )&lt;br /&gt;
        ciur[ i ] = 1;&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
  nPr = j;&lt;br /&gt;
&lt;br /&gt;
  FILE *fin = fopen( &amp;quot;paisprezece.in&amp;quot; , &amp;quot;r&amp;quot; );&lt;br /&gt;
  fscanf( fin , &amp;quot;%d%d&amp;quot; , &amp;amp;x , &amp;amp;y );&lt;br /&gt;
  fclose( fin );&lt;br /&gt;
&lt;br /&gt;
  //luam fiecare solutie de forma p^13 cu p prim&lt;br /&gt;
  i = 0;&lt;br /&gt;
  solutii = 0;&lt;br /&gt;
  while( prime[ i ] &amp;lt;= MAX_PRIM_13 ) {&lt;br /&gt;
    nr = putere( prime[ i ] , 13 , 1 );&lt;br /&gt;
    if( x &amp;lt;= nr &amp;amp;&amp;amp; nr &amp;lt;= y )&lt;br /&gt;
      solutii++;&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  //luam fiecare solutie cu p * q ^ 6 cu p si q prim&lt;br /&gt;
  i = 0;&lt;br /&gt;
  while( prime[ i ] &amp;lt;= MAX_PRIM_6 ) {&lt;br /&gt;
    nr = putere( prime[ i ] , 6 , 1 );&lt;br /&gt;
    j = 0;&lt;br /&gt;
    while( prime[ j ] * nr &amp;lt;= y &amp;amp;&amp;amp; j &amp;lt; nPr ) {&lt;br /&gt;
      if( prime[ i ] != prime[ j ] &amp;amp;&amp;amp; x &amp;lt;= prime[ j ] * nr )  &lt;br /&gt;
        solutii++;&lt;br /&gt;
      j++;&lt;br /&gt;
    }&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  FILE *fout = fopen( &amp;quot;paisprezece.out&amp;quot; , &amp;quot;w&amp;quot; );&lt;br /&gt;
  fprintf( fout , &amp;quot;%d&amp;quot; , solutii );&lt;br /&gt;
  fclose( fout );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
Stiim ca un numar de forma:&lt;br /&gt;
p1^e1 * p2^e2 * ... * pn^en unde p1 , p2 , ... , pn sunt nre prime&lt;br /&gt;
are nr de divizori egal cu ( e1+1 ) * ( e2+1 ) * ... * ( en+1 )&lt;br /&gt;
&lt;br /&gt;
14 = 1 * 14 = 2 * 7&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; un numar este ori p^13 ori p * q^6&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Lectie = &lt;br /&gt;
== Construirea unui vector de numere prime ( Comparcatarea ciurului ) ==&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
/* &lt;br /&gt;
Dorim sa contruim un vector de numere prime mai mici sau egale cu o val data VMAX&lt;br /&gt;
Ne vom folosi deci de ciurul lui Eratostene pentru a determina care numere sunt prime pana la VMAX&lt;br /&gt;
Vom ignora numerele pare atunci cand marchez numerele neprime, neaccesand nicioadata aceste pozitii&lt;br /&gt;
Vom marca penru un divizor d divizorii acestuia impari: d * d, d*(d+2), ....Sar peste elementele d*(d+1), d*(d+3) acestea fiind numere pare&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#define VMAX 1000000&lt;br /&gt;
char ciur[VMAX+1] = {0}; &lt;br /&gt;
int prime[300000];  // dimensiunea vectorului este data de numarul de numere prime pe care le-as putea gasi pena la VMAX&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  ................. &lt;br /&gt;
  // marcam in ciur numerele impare prime&lt;br /&gt;
  for(int d = 3; d * d &amp;lt;= VMAX; d +=2 )&lt;br /&gt;
    if( ciur[d] == 0 )                                                 &lt;br /&gt;
      for(int i = d * d; i&amp;lt;= VMAX; i = i + 2 * d )   &lt;br /&gt;
        ciur[i] = 1;&lt;br /&gt;
  // punem nr 2 in vectorul de numere prime, fiind singurul nr par prim&lt;br /&gt;
  prime[0] = 2; &lt;br /&gt;
  // parcurgem ciurul doar pe pozitiile impare si construim vectorul de numere prime&lt;br /&gt;
  k = 1;&lt;br /&gt;
  for( d = 3; d &amp;lt;= VMAX; d += 2 )&lt;br /&gt;
    if( ciur[d] == 0 ) &lt;br /&gt;
       prime[k++] = d;&lt;br /&gt;
...................&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#define VMAX 1000000&lt;br /&gt;
&lt;br /&gt;
char ciur[VMAX] = {0}; &lt;br /&gt;
int prime[300000];         &lt;br /&gt;
&lt;br /&gt;
  v[0] = 2; k = 1;&lt;br /&gt;
  for(d = 3; d &amp;lt;= 1000000; d +=2 )&lt;br /&gt;
    if( ciur[d] == 0 ){                                       // daca d e prim&lt;br /&gt;
      prime[k++] = d;                                         // pun val d in vectorul v&lt;br /&gt;
      for(long long i = 1LL * d * d; i&amp;lt;= 1000000; i=i+2*d )   // marchez ca neprime&lt;br /&gt;
        ciur[i] = 1;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://infoarena.ro/problema/divprim&lt;br /&gt;
&lt;br /&gt;
= Tema = &lt;br /&gt;
* [http://varena.ro/problema/prime prime]             [http://isa.algopedia.ro/wiki/index.php/prime Rez]&lt;br /&gt;
* [http://varena.ro/problema/prime1 prime1]           [http://isa.algopedia.ro/wiki/index.php/prime1 Rez]&lt;br /&gt;
* [http://varena.ro/problema/sprime sprime], XOR 2015 [http://isa.algopedia.ro/wiki/index.php/sprime Rez]&lt;br /&gt;
* [https://infoarena.ro/problema/divprim divprim]     [http://isa.algopedia.ro/wiki/index.php/divprim Rez]&lt;br /&gt;
== Optional == &lt;br /&gt;
* [http://campion.edu.ro/arhiva/index.php?page=problem&amp;amp;action=view&amp;amp;id=365 prime] Campion2005 [http://isa.algopedia.ro/wiki/index.php/prime_campion Rez]&lt;br /&gt;
* [http://campion.edu.ro/arhiva/index.php?page=problem&amp;amp;action=view&amp;amp;id=1176]     [http://isa.algopedia.ro/wiki/index.php/bileprime_campion Rez]&lt;br /&gt;
== Alte probleme ==&lt;br /&gt;
* [http://varena.ro/problema/extraprime extraprime]&lt;br /&gt;
*[http://campion.edu.ro/arhiva/index.php?page=problem&amp;amp;action=view&amp;amp;id=710 Prime1_campion] Sansa de a fi campion 2002&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>