procedure UDivMod(const Dividend, Divisor: LongWord; var Result, Remainder: LongWord); register; asm push ebx; mov ebx,edx; xor edx,edx; div ebx; mov ebx,Remainder; mov [ecx],eax; mov [ebx],edx; pop ebx; end; function IsPrimeNumber(const Number: LongWord): boolean; var DivisorA, DivisorB, Modulo, DivisorsCount : LongWord; begin Result := false; if Number < 2 then exit; DivisorA := 1; DivisorB := Number; Modulo := 0; DivisorsCount := 0; if DivisorA < DivisorB then repeat UDivMod(Number, DivisorA, DivisorB, Modulo); if Modulo = 0 then DivisorsCount := DivisorsCount + 2; DivisorA := DivisorA + 1; until (DivisorA >= DivisorB) or (DivisorsCount >= 3); Result := DivisorsCount = 2; end;
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.