Pagini recente » Cod sursa (job #484250) | Cod sursa (job #1740252) | Cod sursa (job #1125748) | Cod sursa (job #2097534) | Cod sursa (job #3309712)
// https://www.infoarena.ro/problema/ciur
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define INPUT_FILE "ciur.in"
#define OUTPUT_FILE "ciur.out"
int main()
{
FILE *in = NULL;
if ((in = fopen(INPUT_FILE, "r")) == NULL)
{
fprintf(stderr, "failed to open input file %s\n", INPUT_FILE);
exit(-1);
}
unsigned n = 0;
fscanf(in, "%u", &n);
fclose(in);
bool *isComposite = (bool *)calloc(n + 1, sizeof(bool));
for (unsigned i = 2; i * i <= n; i++)
{
if (!isComposite[i])
{
for (unsigned j = i * i; j <= n; j += i)
{
isComposite[j] = true;
}
}
}
unsigned primeCount = 0;
for (unsigned i = 2; i <= n; i++)
{
if (!isComposite[i])
{
primeCount++;
}
}
FILE *out = NULL;
if ((out = fopen(OUTPUT_FILE, "w")) == NULL)
{
fprintf(stderr, "failed to open output file %s\n", OUTPUT_FILE);
exit(-2);
}
fprintf(out, "%u", primeCount);
fclose(out);
return 0;
}