Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. procedure Smallest_Factor (N : in out Positive; Factor : out Positive)
  2. with
  3. SPARK_Mode,
  4. Pre => N > 1,
  5. Post => (Factor > 1) and
  6. (N'Old rem Factor = 0) and
  7. (for all J in 2 .. Factor - 1 => N'Old rem J /= 0) is
  8. begin
  9. Factor := 2;
  10.  
  11. if N /= 2 then
  12.  
  13. Outer_Loop:
  14. for I in 2 .. N loop
  15. pragma Loop_Invariant (for all J in 2 .. Factor - 1 => N rem J /= 0);
  16.  
  17. if N rem I = 0 then
  18. Factor := I;
  19. exit Outer_Loop;
  20. end if;
  21.  
  22. end loop Outer_Loop;
  23.  
  24. end if;
  25.  
  26. N := N / Factor;
  27.  
  28. end Smallest_Factor;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement