Số Hoàn Hảo. [Archive] - Diễn Đàn Tin Học

Diễn Đàn Tin Học > Lập trình > Các vấn đề khác trong lập trình > Data Structures + Algorithms > số hoàn hảo. PDA

View Full Version : số hoàn hảo.

daoson_hai23-01-2008, 21:33Theo định nghĩa mà mình biết, thì số hoàn hảo là số mà có tổng các ước của nó = chính nó. VD : 6 có các ước là 1 2 3 và 1+2+3=6. Và một thành viên trong lớp của mình có nói đến công thức để tìm số hoàn hảo là: n=2^(m-1)*(2^m-1). n chính là số hoàn hảo. Các bác ai biết gì về Công thức trên có thể chỉ cho mình tại sao lại là như thế ko? (thông cảm vì thằng bạn chỉ biết CT mà ko biết vì sao có CT lên mình muốn nhờ các bác). bete24-01-2008, 02:00Theo như http://en.wikipedia.org/wiki/Perfect_numbers: Để n=2^(m-1)*(2^m-1) là 1 số hoàn hảo thì 2^m-1 phải là 1 số nguyên tố Để 2^m-1 là 1 số nguyên tố thì m phải là 1 số nguyên tố (nhưng m là 1 số nguyên tố thì chưa chắc 2^m-1 là 1 số nguyên tố) Leonhard Euler đã chứng minh là công thức trên sẽ cho mọi số hoàn hảo chẵn Cho tới giờ thì vẫn chưa biết số hoàn hảo lẻ có tồn tại hay không (hiểu biết nông cạn; có gì sai sót mong được góp ý; xin cám ơn) -thân minh tuyen24-01-2008, 11:19Chào daoson_hai! Bạn hiểu chưa đúng về số hoàn hảo. Số hoàn hảo hay còn gọi là số hoàn chỉnh là số mà tổng các ước số bằng tích các ước số (không kể số đó) vd: 6 = (1+2+3=1x2x3) minh tuyen24-01-2008, 11:31Công thức tìm số hoàn hảo mà bạn viết thì tôi cũng chẳng biết nữa. Tôi muốn tìm số hoàn hảo thì tôi viết 2 hàm: tổng và tích rồi kiểm tra xem nó có bằng nhau hay không. Nếu bàng nhau thì là số hoàn hảo ngược lại thì không. Với cách này thì bạn có thể tìm những số hoàn hảo cho dù chẵn hay lẻ nằm trong một khoảng nào đó mà bạn muốn hoặc kiểm tra 1 số có phải là số hoàn hảo hay không. bete24-01-2008, 12:14thân gửi bạn minh tuyen, Số hoàn hảo hay còn gọi là số hoàn chỉnh là số mà tổng các ước số bằng tích các ước số (không kể số đó) => theo như trang wikipedia ở trên thì định nghĩa của daoson_hai là đúng Ví dụ: 28 cũng là 1 số hoàn hảo 28 = 1 + 2 + 4 + 7 + 14 (hiểu biết nông cạn; có gì sai sót mong được góp ý; xin cám ơn) -thân minh tuyen24-01-2008, 13:40Chào bete! Các nhà toán học định nghĩa số hoàn chỉnh như thế nào thì mình không rõ lắm. Thầy mình dạy số hoàn chỉnh như thế nên mình ghi lại lên diễn đàn. Thầy mình thì bảo đảm là chính xác, không sai. Trang wikipedia thì ai vào sửa cũng được, nên độ chính xác không cao. Thân. minh tuyen24-01-2008, 14:12Chào các bạn! Hay là số hoàn hảo khác số hoàn chỉnh. Hay là mình nhầm? lúc trước mình học là số hoàn chỉnh, mình nghĩ số hoàn hảo chính là số hoàn chỉnh. Bạn nào biết xin cho biết. bete24-01-2008, 14:27Thân gửi bạn minh tuyen Trang wikipedia thì ai vào sửa cũng được, nên độ chính xác không cao => bạn nói cũng có lý Tui thử tìm thêm trên mạng về perfect numbers: http://www.google.com/search?q=perfect+number => mấy cái link đầu đều cho ví dụ với tổng của ước số mà không thấy nhắc gì tới tích của ước số Tui không nhớ chắc thuật ngữ tiếng Việt là "số hoàn hảo" hay "số hoàn chỉnh"; nhưng thuật ngữ tiếng Anh là "perfect number" (hiểu biết nông cạn; có gì sai sót mong được góp ý; xin cám ơn) -thân minh tuyen24-01-2008, 15:44Chào các bạn! Số hoàn hảo và số hoàn chỉnh là 2 số khác nhau. Xin lỗi tớ nhầm. daoson_hai25-01-2008, 21:10Chào hai bạn! Cái số mà mình muốn nói chính là số "perfect number". Còn số mà bạn Minh Tuyên muốn nhắc đến mình cũng được thầy giới thiệu rồi nhưng đó là số định nghĩa hoàn toàn khác với số mà mình đề cập đến. m2mpro27-01-2008, 08:57Chỉ cần viết hàm tổng thôi rồi kiểm tra xem nó có bằng chính nó không. Cộng các ước số của nó lại nếu bằng nó thì là số hoàn hảo ! daoson_hai28-01-2008, 20:06Này bạn nếu như bạn đã có công thức trên sao bạn ko áp dụng vô, chạy được với dữ liệu lớn, còn cách của bạn còn phải tìm ước số của số đó rồi cộng vào. Liệu hỏi làm bài trên pascal chạy được bao nhiêu, nhanh hay chậm. Nếu như khi đi thi mình nghĩ cách này thật ko hay chút nào. soujiro_seta03-02-2008, 22:19Mình nghĩ đó chắc chắn là số hoàn chỉnh, đây là công thức khá hay, mình mới gặp lần đầu. hungpham09-02-2008, 11:17Định nghĩa số hoàn hảo: Là số tự nhiên lớn hơn 1 có tổng các ước (không kể chính nó) bằng chính nó. CÓ một TC của S(n) (hàm tổng các ước của n) là S(p)S(q)=S(pq) nếu p,q nguyên tố cùng nhau. Từ đó có thể kiểm tra ngay công thức 2^{n-1}(2^n-1). Việc chứng minh công thức này cho mọi số hoàn hảo chẵn nói chung cũng khá đơn giản. Hiện tại chưa tìm đc số hoàn hảo lẻ. Có giả thuyết là ko tồn tại, và giả thuyết này là mở. Thỉnh thoảng cũng có một vài người tuyên bố là tìm đc số hoàn hảo lẻ nào đấy nhưng sau đó check lại đều sai cả. Thanhkieng09-02-2008, 11:27bạn muốn biết công thức này có chính xác hay không bạn thử dùng phương pháp quy nạp để chứng minh. ngoài ra bạn có thể viết chương trình: - tìm tất cả các ước của một số N bất kì - tính tổng tất cả các ước số đó( trừ N ra) if N==tổng các ước) Console.Write(" N là số hoàn hỏa"); else Console.Write(" N là ko phải là số hoàn hỏa"); mr_invincible13-02-2008, 22:51Theo em thì làm theo công thức đó thì mang tính chất toán học quá, hơn nữa công thức đó chỉ liệt kê ra các số hoàn chỉnh là số chẵn. Còn người ta vẫn chưa chứng minh được có tồn tại số hoàn chỉnh lẻ hay không Do vậy theo ý kiến của em thì nên viết theo kiểu tin học: Tính tổng các ước của n rồi so sánh với n daoson_hai28-02-2008, 12:34Ừm, nhưng mà mình là dân Tin cũng phải có cái đầu của dân toán thì mới giải bài toán-tin mới được chứ. Cách làm của bạn cũng được nhưng có kết quả đúng thì chưa chắc đã là bài làm tốt (dối với bộ môn Tin học là vậy) mà bài làm còn phải chạy được với dữ liệu lớn nữa. Cho nên theo mình thì mình vẫn thích đùng công thức trên để làm hơn, còn ý kiến của bạn cũng có lí lắm. mr_invincible28-02-2008, 22:36Theo ý kiến của mình thì những bài khó về tin nó thuộc những dạng khác: tham lam, quy hoạch động hay đồ thị. Còn với những bài toán liệt kê thì mình vẫn phải làm theo cách liệt kê bởi vì đâu phải lúc nào ta cũng có toàn bộ kiến thức toán để giải những bài toán tối ưu liệt kê. Chẳng hạn như khi phải tìm một hoán vị thỏa mãn điều kiện nào đó, bạn vẫn phải thử hết (tât nhiên có thể dùng nhánh cận để giảm bớt khả năng) các trường hợp Trong bài này cũng vậy, theo mình thì đây thuộc bài toán cổ điển, tất nhiên đi thi sẽ không có loại bài này (vì nó quá cổ điển, đã có rất nhiều nhà khoa học nghiên cứu về loại số này, nhiều người còn cho rằng nếu tìm ra được một số hoàn hảo thì sẽ được hạnh phúc cả đời nên đã có rât nhiều người tìm các số hoàn hảo) -> không cần phải lo nghĩ đến việc chạy dữ liệu lớn. Do đó nếu mình làm với ý nghĩa là một bài tin học thì nên liệt kê mọi khả năng. Hơn nữa, như đã nói ở trên, toán học chưa thể chứng minh là không có số hoàn hảo lẻ và công thức trên cũng chỉ cho ra các số hoàn hảo chẵn. Và công thức trên còn liên quan đến việc kiểm tra số nguyên tố lớn, nếu bạn muốn chạy với dữ liệu lớn thì riêng việc kiểm tra số nguyên tố cũng đã đủ mệt rồi Có gì sai sót mong các bạn thông cảm daoson_hai29-02-2008, 20:21Bạn nói đúng lắm, mình xin ghi nhận ý kiến này. mr_invincible01-03-2008, 21:21Hihi nói bừa thôi mà :D rocky_cbg02-03-2008, 11:20uhm, mình nghĩ làm tin mà dùng công thức toán thì ko hay lắm, hiểu rõ thuật toán thì hay hơn, làm bài cổ điển để lấy kinh nghiệm viết CT, mà mình viết thử, mới kiểm tra đến 20000, hình như chỉ có 3 số thôi đúng ko vậy (6, 28 với 8 nghìn bao nhiếu ý, mình ko nhớ, để về xem lại), cái này chẳng biết cách kiểm tra tính đúng đắn nhỉ. mr_invincible02-03-2008, 22:10Nói chung ít số lắm, mình chỉ tìm được khoảng 4 số thôi daoson_hai15-03-2008, 23:27tớ thì tìm được 5 số nhờ cái công thức đó nè Show_chidong02-04-2009, 22:38theo mình được biết số hoàn hảo là số mà "tổng các ước của nó (không tính nó) bàng chính nó vd:6=1+2+3; có ban "minh tuyen" nói là tích thì theo mình là sai vì nó chỉ đúng với một vài số khác: vái dụ : 6=1+2+3=1*2*3: nhung 28==1+2+4+7+14 khác 28!=1*2*4*7*14 các bạn thử nghĩ xem "có gì sơ suất mong bỏ qua nhé " bạn nào có bài C# về câu này gửi lên mình tham khảo nhé! thank you! [=========> Bổ sung bài viết <=========] để tối nay mình làm bằng C# xem co OK! không mình nghĩ là nhiều số chứ ko chỉ vài số "đợi mình nhé " hoangnambg04-06-2009, 07:14mình đọc nhiều tham luận nói về số hoàn hảo quá. Các bạn chốt cho mình một câu Số Hoàn Hỏa là số thế nào? Tổng các ước của nó có bằng tích các ước không? Thankiu ly_sv04-06-2009, 07:45số hh là số có tổng các ước bằng chính nó OK bara_dh20-02-2010, 16:48So hoan hao la so bang tong cac uoc thuc su cua no vothaihoc28-03-2010, 07:40ai viết giùm cách tìm số hoàn thiện trong C++ đi :(( làm hoài mà vẫn sai chán ghê tuan_nv9008-06-2011, 14:15bạn nào chỉ gúp mình với về số hoàn hảo với.khó quá! dauhalan8819-08-2011, 11:03bạn có thể làm một thuật toán kiểm tra số đó có phải là số hoàn hảo không thì làm như thế nào nhỉ hoanlk9318-09-2012, 23:35sai rồi bạn ơi, nếu như bạn thì tất cả những số nguyên tố và số 6 đều là số hoàn hảo cả. Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.

Từ khóa » Số Hoàn Hảo Là Gì Wiki