30/09/2018, 22:07
Bài toán kiểm tra số nguyên tố
Mọi người cho em hỏi tại sao khi em khai báo i=0 ( chỗ khoanh đỏ ) thì chương trình lại không chạy được .( Em dùng debug của code:blocks thì nhận ra sau lệnh for i không tăng lên 1 mà giữ nguyên là 0, khó hiểu quá ! )
Em cũng tham khảo trên diễn đàn 1 số cách để kiểm tra số nguyên tố , có anh đưa ra đoạn code như sau em không hiểu ( làm sao mà vừa return 0 xong ở dưới lại return 1 , thế hóa ra nhập số nào vào nó cũng return 1 ạ ) mọi người giải thích em với !!
for (int i = 2; i <= sqrt((float)soA); i ++)
{
if (soA%i==0)
{
return 0;
}
}
return 1;
}
Bài liên quan
Do compiler thôi :v Có thể xem tại đây: http://stackoverflow.com/questions/24881/how-do-i-fix-for-loop-initial-declaration-used-outside-c99-mode-gcc-error
Khai báo i bên ngoài FOR là được.
Return 0 hoặc 1 xong là nó cũng kết thúc cả hàm rồi, nếu dòng return 0 được chạy thì hàm sẽ kết thúc ngay tại thời điểm đó luôn.
C không cho bạn khai báo i trong for. Bạn khai báo ở ngoài, rồi ở trong bạn ghi i=0 là đc
Bạn mở Code::Blocks lên. Vào Settings -> Compiler…
Sau đó check ở mục này
This post was flagged by the community and is temporarily hidden.
Mình chỉnh chuẩn c99 mà bạn
em đã chỉnh về c99 như cách anh Đạt chỉ trong video dạy về for mà nó vẫn thế ( rất lạ là khi em khai báo i= 1) thì chương trình chạy ổn bác ạ !!
Câu trả lời như của lão @Phong_Ky_Vo
Number%i mà i=0 thì ra cái gì hả thớt.
THế em mới bảo là sau lệnh for mặc dù em viết là ( int i=0; int i < sqrt(number); i++) nhưng sau đó i không hề được tăng lên 1 nó vẫn giữ nguyên là 0 nên xảy ra lỗi , em đang thắc mắc tại sao nó không tăng lên 1 mà
Bởi vì nó bắt đầu từ 0 còn gì ?
for(int i=0;…)
This post was flagged by the community and is temporarily hidden.