2017-01-15 3 views
1

Je veux écrire un programme pascal qui vérifie si un nombre particulier est divisible par 2, 3, 5, 7, 9 et 11 et si la somme des chiffres est paire ou impaire. À la toute fin je veux écrire une déclaration comme "Ce nombre est divisible par 5 et 9" et la somme des nombres est pair/impair. Que devrais-je faire?Divisibilité des nombres en pascal

+0

Non, honnêtement, je ne sais même pas comment commencer. – charlie

+0

Un nombre est même divisible par un autre nombre si le reste est zéro. Utilisez l'opérateur mod pour vérifier cela. Utilisez la fonction Odd pour tester si un nombre est impair. Pour faire une somme des chiffres qui font un nombre, ajoutez le module 10 du nombre à une somme et divisez le nombre par 10 dans une boucle jusqu'à ce que le nombre soit zéro. –

+1

Vous pouvez utiliser ** mod ** pour vérifier le nombre particulier –

Répondre

0

C'est mon code, je sépare en 2 sections:

program checkNumber; 
var number : integer; 
    divider : string; 
    digit1, digit2, sum : integer; 

begin 

//First// 
write('Number : '); readln(number); 
if (number MOD 2 = 0) then divider := divider+'2, '; 
if (number MOD 3 = 0) then divider := divider+'3, '; 
if (number MOD 5 = 0) then divider := divider+'5, '; 
if (number MOD 7 = 0) then divider := divider+'7, '; 
if (number MOD 9 = 0) then divider := divider+'9, '; 
if (number MOD 11 = 0) then divider := divider+'11, '; 
write('This number is divisible by '); write(divider); 
//////////////////////////////////////////////////////// 

//Second// 
digit1 := number DIV 10; 
digit2 := number MOD 10; 
sum := digit1 + digit2; 
write('and the sum of the numbers is '); 
if (sum MOD 2 = 0) then write('even') else write('odd'); 
//////////////////////////////////////////////////////// 

end. 

Première partie

Vous avez besoin opération MOD (module) pour obtenir la liste des valeurs de diviseur:

write('Number : '); readln(number); 
if (number MOD 2 = 0) then divider := divider+'2, '; 
if (number MOD 3 = 0) then divider := divider+'3, '; //divider 2 3 5 7 9 11 
. 
. 

enregistrez le diviseur dans la variable diviseur sous forme de chaîne, et l'écrire sur le moniteur.

write('This number is divisible by '); write(divider); 

Deuxième partie

Vous devez séparer les chiffres dans la variable unique à l'aide DIV (fracture) et opération MOD (module). Dans mon code, je limite l'entrée numérique pour 2 chiffres (1 jusqu'à 99):

digit1 := number DIV 10; 
digit2 := number MOD 10; 
sum := digit1 + digit2; 

(vous changez l'utilisation du code if..then .. fonction si vous voulez obtenir une entrée plus grand nombre).


Ensuite, utilisez MOD pour vérifier le numéro est pair ou impair:

if (sum MOD 2 = 0) then write('even') else write('odd'); 
+1

merci, maintenant je comprends enfin. :) – charlie

+0

est-ce que cela a résolu votre problème? –

+0

Oui, c'est vrai! :) – charlie

1

Utiliser le module:

program ModulusTest; 
begin 
     if 8 mod 2 = 0 then 
     begin 
       write(8); 
       writeln(' is even'); 
     end; 
     if 30 mod 5 = 0 then 
     begin 
       write(30); 
       writeln(' is divisible by 5'); 
     end; 
     if 32 mod 5 <> 0 then 
     begin 
       write(32); 
       writeln(' is not divisible by 5'); 
     end; 
end. 

Modulus est ce qui reste après une division entière :)

+0

Grand, merci! Une question: que veut dire 8, 30, 32? Ou sont-ils juste des nombres aléatoires et ce n'est qu'un exemple? – charlie

+0

Il y a juste des nombres totalement composés :) – jacmoe

+0

Okay. Et pourriez-vous me dire pourquoi vous avez utilisé <> au lieu de = dans le dernier exemple? – charlie