Blogger Widgets

Thứ Bảy, 16 tháng 11, 2013

Tìm số N thỏa điều kiện cho trước

Bài 1: Cho số tự nhiên A. Hãy tìm số tự nhiên N nhỏ nhất sao cho NN chia hết cho A. Viết chương trình tìm số đó và xuất ra màn hình. Trong đó A có giá trị: 1<=A<=10^9

         Nhận xét: Với miền giá trị của A từ 1 đến  10^9  thì việc tính  N^N  có khả năng sẽ dẫn đến một giá trị vô cùng lớn, và khả năng bị lỗi cũng sẽ tăng cao. Đặc biệt, nếu như gái trị A nhập vào ban đầu là một số nguyên tố thì N lại chính là bằng A. Việc tìm kiếm tuần tự từ 1 đến A là không tối ưu.

         Bước 1:Điều kiện để một số nguyên bất kì X chia hết cho A
X chia hết cho A <=> X và A có cùng lượng thừa số nguyên tố và bằng nhau từng đôi một.
 
         Bước 2: Phát hiện:
Đặt N = i=1kpi với pi là thừa số nguyên tố thứ i  là số nguyên tố thứ i, k là lượng thừa số nguyên tố.
            + Xét A =  i=1kpibi, Nếu N^N chia hết cho A thì đáp án phải là bội của N.
Vậy: N^N thực chất chỉ là nhân N cho các số mũ của những thừa số nguyên tố.
          Bước 3: Lập thuật toán.
           
            + Đầu tiên, phân tích A = i=1kpibi
            + Ta đặt: N = i=1kpi. Nếu N ≥ 29, in N và thoát.
+ Tìm số mũ p1, p­­2. 2 số này ta đặt là a, b => N = p1a.p2b; bài toán trở về việc tìm 2 số a, b sao cho a.N ≥ b1, b.N ≥ b2, a≥ 1, b ≥ 1 và tích a.b nhỏ nhất.

0 nhận xét :

Đăng nhận xét

Copyright © 2011 Template Doctor . Designed by Malith Madushanka - Cool Blogger Tutorials | Code by CBT | Images by by HQ Wallpapers