30/09/2018, 20:03

Đếm chữ số bị lỗi trong C#

Yêu cầu của cái đoạn code này là cho mình nhập n bất kỳ. Sau đó nó sẽ xuất ra các thừa số nguyên tố cho ta, cùng với coi thử số đó có bao nhiêu chữ số. Mặc dù mình đã cố thêm biến m=n ngụ ý lấy n ban đầu, nhưng cuối cùng nó vẫn sai phần xác định chữ số.

Giả sử mình nhập n=1000, thì nó trả về là “số 1 có 1 chữ số” chứ không phải “số 1000 có 4 chữ số”. Mọi người xem giúp mình.

Gió viết 22:12 ngày 30/09/2018

Sau bước phân tích ra thừa số nguyên tố thì n=1 mất rồi. m=n trước khi phân tích. Mà tốt nhất là đừng thay đôi n. Dùng biến tạm mà thay thế
khi n=0 thì phân tích thừa số nguyên tố lặp vô hạn

Minh My viết 22:14 ngày 30/09/2018

Mình mới lần đầu dùng C#, bạn nói vậy ai mà hiểu được.

Gió viết 22:19 ngày 30/09/2018

Thế thì code này không phải của bạn rồi

NhatTa viết 22:18 ngày 30/09/2018

Bạn @Gio nói đúng rồi đó, cái này thuộc về thuật toán đơn giản không phải thuộc về ngôn ngữ.
Đưa đoạn code
int m = n
sau đoạn khi nhập n là được. Đoạn nào bạn chạy thấy sai kết quả nên chạy debug đặt breakpoint chỗ đó xem từng bước chạy ra sao mới hiểu được.

Sáng Béo viết 22:04 ngày 30/09/2018

Để mình nói rõ cho bạn nhé. kiki

Sau bước phân tích ra thừa số nguyên tố thì n=1 mất rồi.

Ý bạn Gió là trong vòng lặp để tìm các thừa số nguyên tố bạn đã thay đổi n, bạn chia n cho i các kiểu các kiểu, thì thoát ra khỏi vòng lặp đó n đã = 1 mất rồi. kiki

m=n trước khi phân tích

tức là bạn phải lưu lại giá trị của n trước khi phân tích ra thừa số nguyên tố, kẻo chia mất rồi thì lưu lại làm sao được nữa. kiki

Mà tốt nhất là đừng thay đôi n. Dùng biến tạm mà thay thế

tức là bạn nên dùng 1 biến tạm để phân tích chứ không dùng trực tiếp n giống như ý tưởng dùng m để đếm số chữ số ấy. kiki

khi n=0 thì phân tích thừa số nguyên tố lặp vô hạn

tức là với trường hợp nhập vào n = 0 thì vòng while (n != 1) có điều kiện luôn đúng, n luôn bằng 0, nên sẽ lặp vô hạn. kiki

Bài liên quan
0