👤

Am si eu nevoie de un program in C, nu C++ pentru Ciurul lui Eratostene. Am o varianta in C++ ok, dar nu prea stiu sa o traduc in C#.

#include <iostream>#include <math.h>using namespace std; int main() {int a[1001];int nr = 0, n, i, j;cout << "Numerele pana la: ";cin >> n;for (i = 2; i <= n; i++)a[i] = 1;for (i = 2; i <= sqrt(n); i++)if (a[i] != 0)for (j = 2; j <= n / i; j++)a[i*j] = 0;for (i = 2; i <= n; i++)if (a[i] != 0)nr++;//Daca a[i]!=0, in cazul nostru cand a[i]==1, crestem contorul, de exemplu cand dam de numarul 2, nr ajunge 1, la numarul 3, nr ajunge 2, etc.cout << nr << endl;return 0;}


Răspuns :

#include <stdio.h>#include <math.h>
 int main() {     int a[1001];int nr = 0, n, i, j;
    printf("Numerele pana la: ");    scanf("%d", &n);
    for (i = 2; i <= n; i++)    a[i] = 1;        for (i = 2; i <= sqrt(n); i++)    if (a[i] != 0)    for (j = 2; j <= n / i; j++)        a[i*j] = 0;    for (i = 2; i <= n; i++)    if (a[i] != 0)    nr++;//Daca a[i]!=0, in cazul nostru cand a[i]==1, crestem contorul, de exemplu cand dam de numarul 2, nr ajunge 1, la numarul 3, nr ajunge 2, etc.    printf("%d", nr);    return 0; }
#include<stdio.h>
 
int i, j, nr, sol[1005], n;
char a[2000005];
inline int min(int a, int b){
    if (a < b)
        return a;
    return b;
}
int main()
{
    freopen("ciur.in", "rt", stdin);
    freopen("ciur.out", "wt", stdout);
     
    scanf("%d", &n);
     
    for (i = 2; i*i <= n; i ++)
        if (!a[i])
            for (j = 2*i; j <= n; j += i)
                a[j] = 1;
     
    for (i = n; i > 1; i --)
        if (!a[i])
            nr ++;
     
    printf("%d\n", nr);
     
    return 0;
}