ansi.c 604 Bytes
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#define erreur(...) { fprintf(stderr,__VA_ARGS__) ; exit(EXIT_FAILURE); }
int32_t premier(uint32_t n){
bool crible[n*n+1];
for(uint32_t i=0;i<=n*n;i++) crible[i]=true;
for(uint32_t i=2;i<=n;i++)
  if(crible[i]){
    uint32_t j=i*i;
    while(j<=n*n){ crible[j]=false; j += i; }
    }
int32_t result=-1;
for(int32_t i=n*n;i>=0;i--) if(crible[i]){ result=i; break; }
return result;
}
int main(void){
uint32_t n;
if(scanf("%d",&n)!=1) erreur("Echec de lecture du nombre\n");
printf("premier -> %d\n",premier(n));
return 0;
}