Определение автоморфных чисел на отрезке [m, n] - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, с задачей: Составьте программу для нахождения автоморфных чисел в отрезке [m,n]. Автоморфным числом называется число, которое равно последним числам своего квадрата. Например, 5^2=25, 6^2=36, 25^2=625. У меня получилось неправильно, потому, что я использовал принцип проверки суммы остатков от деления (числа и его квадрата), вот что у меня получилось:
Листинг программы
  1. predicates
  2. step(integer,integer)
  3. step2(integer,integer,integer,integer,integer,integer)
  4. goal
  5. write("from: "),
  6. readint(X),
  7. write("to: "),
  8. readint(X1),
  9. step(X,X1).
  10. clauses
  11. step(X,X1):-X1>X,!,XX=X*X,step2(X,X1,XX,0,0,X).
  12. step2(X,X1,XX,Y,YY,FX):-X div 10 > 0,!,
  13. X2= X div 10,
  14. XX2=XX div 10,
  15. Y2 =Y+(X mod 10),
  16. YY2=YY+(XX mod 10),
  17. %write(Y2,", ",YY2),
  18. step2(X2,X1,XX2,Y2,YY2,FX).
  19. step2(X,X1,XX,Y,YY,FX):-X2= X div 10,
  20. Y2=Y+(X mod 10),
  21. YY2=YY+(XX mod 10),
  22. X11=FX+1,
  23. X11<=X1,Y2=YY2,!,
  24. write(FX,", "),
  25. step(X11,X1);
  26. X2= X div 10,
  27. Y2=Y+(X mod 10),
  28. YY2=YY+(XX mod 10),
  29. X11=FX+1,
  30. X11<=X1,!,
  31. %write(X,", "),
  32. step(X11,X1).

Решение задачи: «Определение автоморфных чисел на отрезке [m, n]»

textual
Листинг программы
  1. predicates
  2. chk(integer,integer,integer)
  3. is_Automorph(integer)
  4.  
  5. clauses
  6. chk(N,Q,P) :- N=Q mod P, !.
  7. chk(N,Q,P) :- Q>P, P1=P*10, chk(N,Q,P1), !.
  8. chk(_,_,_) :- fail.
  9.  
  10. is_Automorph(N) :- Q=N*N, chk(N,Q,10).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы