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.
Bài liên quan
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
Mình mới lần đầu dùng C#, bạn nói vậy ai mà hiểu được.
Thế thì code này không phải của bạn rồi
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.
Để mình nói rõ cho bạn nhé. kiki
Ý 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
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
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
tức là với trường hợp nhập vào
n = 0
thì vòngwhile (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