Đây là một số interview question: "Cho 2 số nguyên x và y, hãy kiểm tra xem x có phải là số nguyên của y" (ví dụ x = 8 và y = 2 câu trả lời hay không " true ", và cho x = 10 và y = 2" false ").Kiểm tra xem một số nguyên có phải là số nguyên của một số khác
Các giải pháp rõ ràng là:
int n = y; while(n < x) n *= y; return n == x
Bây giờ tôi đang suy nghĩ về làm thế nào để cải thiện nó.
Tất nhiên, tôi có thể kiểm tra một số trường hợp đặc biệt: ví dụ: cả hai số x
và y
phải là số lẻ hoặc số chẵn, nghĩa là chúng tôi có thể kiểm tra bit ít quan trọng nhất là x
và y
. Tuy nhiên tôi tự hỏi nếu tôi có thể cải thiện các thuật toán lõi chính nó.
Thực ra, tôi nghĩ giải pháp rõ ràng là chia x theo y rồi chia kết quả của y liên tục cho đến khi bạn đạt đến số không chia hết cho y. Nếu số đó là 1, x là công suất của y. – JeremyP
Thật không may là không một người dùng nào ở đây nhận thấy rằng mọi đoạn mã được đăng không thành công cho x = ± 1 – Nabb
Không, công trình của tôi cho x = +1 (và một số ít tầm thường sửa số âm). Bây giờ y == 0, tuy nhiên. –