1. Để code có màu thì bạn dùng thẻ code như bình thường, xong thêm viết thêm =C hoặc =C++ vào ([ CODE=C ] , không có dấu cách trong ngoặc vuông)
2. Tìm số nguyên tố lớn nhất thì for ngược lại như VoTichSu nói là chuẩn rồi. Lúc đó mình sửa luôn trên code của bạn nên chưa để ý tối ưu đoạn đó.
3. char format[10]="%2d": Bạn có để ý mình dùng
printf(format, i) không? Nếu format không bị thay đổi thì sẽ là tương đương
printf("%2d", i). Nhưng lệnh
format[1] = '1' + doronglonnhat đã chỉnh cái số 2 thành số tương ứng với độ rộng lớn nhất + 1. Ví dụ doronglonnhat là 3 thì
printf(format, i) sẽ tương đương với
printf("%4d", i). Vì '1' + 3 = '4'
4. Lệnh continue sẽ nhảy đến thực hiện tiếp lần lặp tiếp theo. Dấu ! là NOT. Tức là nếu i không phải số nguyên tố thì sẽ bỏ qua không thực hiện 2 dòng code ở bên dưới. Viết:
for (i = 2; i<=n; i++) /* In ra các số nguyên tố với độ rộng thỏa mãn */
{
if (!nguyento(i)) continue;
if (++k
% soluong
== 0) printf("\n"); }
tương đương với
for (i = 2; i<=n; i++) /* In ra các số nguyên tố với độ rộng thỏa mãn */
{
if (nguyento(i)) {
if (++k
% soluong
== 0) printf("\n"); }
}
nhưng với cá nhân mình thì cách viết continue dễ nhìn hơn vì 2 lý do:
- 1: Mình nhìn là biết ngay nó sẽ nhảy đến lần lặp kế tiếp, không thực hiện gì khác trong lần lặp đó. Với cách sau, nếu code dài mình còn phải cuộn xuống kiểm tra xem bên dưới block của if có gì nữa không.
- 2: Mỗi block con đều phải căn lề vào trong 1 tab. Mà khi quá nhiều block lồng nhau, lùi vào sâu quá sẽ khó nhìn. Nên mình hạn chế block con khi có thể.
---------------
5. Code của bạn bị lặp vô hạn vì trong vòng lặp
for i để in ra, bạn lại thay đổi chính biến i. Sửa lại bằng cách gán 1 biến
i2 = i rồi tính toán trên biến i2 là được. (mới xem mỗi chỗ đó, còn có lỗi khác không thì ko rõ

)