begin process at 2012 05 27 18:56:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > NOMBRE PREMIER ET FACTORISATION

NOMBRE PREMIER ET FACTORISATION


 Information sur la source

Note :
5,43 / 10 - par 7 personnes
5,43 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :22/09/2001 Vu :3 803

Auteur : ADPro22

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Compilé avec Borland 5.5

Source

  • #include <iostream.h>
  • #include <math.h>
  • #include <conio.h>
  • unsigned long Diviseur(unsigned long n)
  • {
  • unsigned long p = 1 ;
  • unsigned long Res = n ;
  • if((n%2)==0)
  • Res = 2;
  • else if((n%3)==0)
  • Res = 3;
  • else
  • {
  • while((Res==n)&&((6*p-1)<=sqrt(n)))
  • {
  • if((n%(6*p-1))==0)
  • Res = (6*p-1) ;
  • if((n%(6*p+1))==0)
  • Res = (6*p+1) ;
  • p++;
  • }
  • }
  • return Res;
  • }
  • void Factor(unsigned long n)
  • {
  • unsigned tmp1, tmp2 ;
  • tmp1 = Diviseur(n) ;
  • cout << tmp1 ;
  • tmp2 = ( n /tmp1 ) ;
  • while(tmp2!=1)
  • {
  • tmp1 = Diviseur(tmp2) ;
  • cout << " * " << tmp1 ;
  • tmp2 = ( tmp2 /tmp1 ) ;
  • }
  • }
  • void main()
  • {
  • unsigned long n ;
  • clrscr() ;
  • Presentation() ;
  • cout << " Entrer le nombre a tester : " ;
  • cin >> n ;
  • cout << endl ;
  • if(n==Diviseur(n))
  • cout << "\t" << n << " est premier." << endl ;
  • else
  • {
  • cout << "\t" << n << " n\'est pas premier.\n\n" ;
  • cout << "\t" << n << " = " ;
  • Factor(n) ;
  • }
  • cout << "\n\n\nAppuyez sur une touche pour continuer..." ;
  • getch();
  • }
#include <iostream.h>
#include <math.h>
#include <conio.h>


unsigned long Diviseur(unsigned long n)
{
	unsigned long p = 1 ;
	unsigned long Res = n ;

	if((n%2)==0)
		Res = 2;
	else if((n%3)==0)
		Res = 3;
	else
	{
		while((Res==n)&&((6*p-1)<=sqrt(n)))
		{
			if((n%(6*p-1))==0)
				Res = (6*p-1) ;
			if((n%(6*p+1))==0)
				Res = (6*p+1) ;
			p++;
		}
	}
	return Res;
}


void Factor(unsigned long n)
{
	unsigned tmp1, tmp2 ;
	tmp1 = Diviseur(n) ;
	cout << tmp1 ;
	tmp2 = ( n /tmp1 ) ;
	while(tmp2!=1)
	{
		tmp1 = Diviseur(tmp2) ;
		cout << " * " << tmp1 ;
		tmp2 = ( tmp2 /tmp1 ) ;
	}
}


void main()
{
	unsigned long n ;
	clrscr() ;
	Presentation() ;

	cout << " Entrer le nombre a tester : " ;
	cin >> n ;
	cout << endl ;

	if(n==Diviseur(n))
		cout << "\t" << n << " est premier." << endl ;
	else
	{
		cout << "\t" << n << " n\'est pas premier.\n\n" ;
		cout << "\t" << n << " = " ;
		Factor(n) ;
	}
	cout << "\n\n\nAppuyez sur une touche pour continuer..." ;
	getch();
}
 

 Conclusion

Voici une façon de déterminer si un nombre est premier. Cet algorithme est basé sur le fait  que tous les nombres premiers supérieurs à 5 peuvent s'écrire 6*p-1 ou 6*p+1. On n'a pas besoin de tester si tous les nombres impairs sont des diviseurs.
On décrit 5, 11, 17, ... ,6*p-1
et 7, 13, 19 , ... ,6*p+1


 Sources du même auteur

TRANSFORMER UN INT/DOUBLE... EN CHAINE DE CARACTÈRES DE TYPE...
Source avec Zip ICONE DANS LA BARRE DES TACHES AVEC MENU (VC++)
Source avec Zip SERVEUR/CLIENT SOUS WINDOWS EN MODE CONSOLE (VC++,DEVCPP,BOR...
Source avec Zip CLASSE DE CALCUL MATRICIEL (VC++ ET DEVCPP)
CLASSE DE CALCUL MATRICIEL (VC++ ET DEVCPP)

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de nadfri le 19/11/2003 21:16:56

Tu peux encore simplifier pluss si tu savais.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales