HomeLập trình Scratch

Cặp số thân thiết code bằng Pascal và Scratch

Like Tweet Pin it Share Share Email
Like và share giúp mình phát triển website nhé.
  •  
  •  

Cặp số thân thiết nghe giống như đôi bạn ấy nhỉ. Hai số tự nhiên n và m khác nhau được gọi là thân thiết nếu số này bằng tổng các ước số thực sự của số kia và ngược lại.

Người ta đã tìm ra cặp số thân thiết bé nhất đó là 220 và 284. Số 220 có 11 ước thực sự đó là 1, 2, 4, 5, 10, 11, 20, 44, 55 và 110. Tổng của tất cả các ước này đúng bằng 284. Ngược lại, số 284 có 5 ước thực sự đó là: 1, 2, 4, 71, 142, tổng của chúng cũng vừa đúng bằng 220.

Vậy liệu còn có những cặp số thân thiết nào nữa không nhỉ? và nếu cho một số tự nhiên bất kì liệu ta có tìm ra được số thân thiết với số đó không? ta hãy tìm cách giải quyết bài toán này bằng ngôn ngữ lập trình Pascal và Scratch nào.

Một số cặp số thân thiết khác: (1184,1210); (17296, 18416)

Bài toán: Viết chương trình tìm số thân thiết với một số a cho trước

Thuật toán tìm số thân thiết của một số cho trước

Để giải quyết bài toán trên ta cần thực hiện hai nhiệm vụ:

Nhiệm vụ 1: Tính tổng tất cả các ước thực sự của số tự nhiên a và lưu vào biến b, lại một lần nữa ta sử dụng phương pháp cộng dồn, như vậy nếu a thân thiết với số nào thì số đó chỉ có thể là b

Nhiệm vụ 2: Ta phải kiểm tra xem b có thân thiết với a không bằng cách lại cộng dồn các ước thực sự của b vào một biến S chẳng hạn.

Cuối cùng ta so sánh S và a, nếu S = a thì b là số thân thiết với a ngược lại thì không phải.

Code tìm số thân thiết của một số cho trước bằng Pascal

Dữ liệu vào file: thanthiet.inp Dữ liệu ra file: thanthiet.out
Chứa số a So than thiet voi a la:
220 So than thiet voi 220 la:284
12 Khong co so nao than thiet voi 12

Code Pascal

Chương trình tìm số thân thiết của một số cho trước bằng Scratch

Lập trình bằng Scratch theo mình luôn dễ hơn trong Pascal vì vậy các hãy cứ theo thuật toán trong Pascal ở phía trên mà lập trình, chỉ cần những thao tác kéo thả là bạn có thể hoàn thành code rồi, chủ yếu là mình giới thiệu thuật toán, phải tự mình thực hiện thì các bạn mới có thể thành thạo được.

Mình gợi ý thêm là trong Scratch các bạn sử dụng vòng lặp (a-1) lần thay cho vòng lặp for i:=1 to a-1 và nhớ tăng biến i trong vòng lặp nhé.

Lời kết: Cái quan trọng nhất khi lập trình trong bất kì ngôn ngữ nào đó là thuật toán, bạn tìm được thuật toán là đã giải quyết được 90% vấn đề, việc còn lại chỉ là thể hiện thuật toán đó trên ngôn ngữ lập trình nào thôi điều này gần như giống nhau chỉ có một vài khác biệt về cách viết, hãy nắm thật trắc thuật toán, bạn sẽ giỏi bất kì ngôn ngữ lập trình nào không kể Pascal hay Scratch.

Còn rất nhiều con số thú vị đang chờ bạn khám phá chẳng hạn số mạnh mẽ hay số hạnh phúc nữa nhé hãy thường xuyên đọc 50 bài tập scratch để tìm hiểu thêm.

À mà còn cặp số hứa hôn còn thú vị hơn nè bạn.

Bạn nào có thuật toán hay hơn cho bài toán cặp số thân thiết này vui lòng comment chia sẻ nhé!

 

Comments (0)

Trả lời

Your email address will not be published. Required fields are marked *