Trouver les nombres premiers inférieurs à une limite donnée

Description

Liste tout les nombres premiers inférieurs à la limite que l'utilisateur renseigne.
S'arrete si la limite est inférieure à 1 ou si elle n'est pas un nombre.
Pour plus de rapidité, le code ne vérifie que les nombre et diviseurs pairs.
Affiche le nombre d'itérations que chaque nombre à pris.
Enregistre les résultats dans un fichier (nombres_premiers.txt) créé dans le même répertoire que le programme.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>

int main()
{
    FILE* fichier = NULL;
    fichier = fopen("nombres_premiers.txt", "w+");

    if (fichier == NULL)
    {
        printf("impossible d'ouvrir/initialiser le fichier.\n");

        Sleep(100);
        while(1)
        {
            if (GetKeyState(0x0D)<-1)
                break;
            Sleep(10);
        }

        return 0;
    }
    int nombre=3,test=2,limite=0,premier=1,compteur=0;

    printf("Veuillez entrer une limite : ");
    scanf("%d",&limite);
    if (limite>=2)
        printf("2 ce nombre a pris 0 iterations.\n",nombre,compteur);

    if (limite<=0)
    {
        printf("je demandais un chiffre hein... ? et plus grand que 0 ^^'\n");

        Sleep(100);
        while(1)
        {
            if (GetKeyState(0x0D)<-1)
                break;
            Sleep(10);
        }

        fclose(fichier);
        return 0;
    }

    for(nombre=3;nombre<=limite;nombre+=2)
    {
        for(test=3,compteur=1;test<=(sqrt(nombre)) && premier;test+=2,compteur+=1)
        {
            premier=(nombre%test!=0);
        }

        if (premier)
        {
            printf("%d ce nombre a pris %d iterations.\n",nombre,compteur);
            fprintf(fichier,"%d ce nombre a pris %d iterations.\n",nombre,compteur);
        }

        premier=1;
    }
    printf("\n");

    Sleep(100);
    while(1)
    {
        if (GetKeyState(0x0D)<-1)
            break;
        Sleep(10);
    }

    fclose(fichier);
    return 0;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.