Code
#include<stdio.h>
#include<conio.h>
int main()
{
int i, n;
long S;
S = 0;
i = 1;
printf("\nNhap n: ");
scanf("%d", &n);
while(i <= n)
{
S = S + i * i;
i++;
}
printf("i = %d", i);
printf("\nTong 1^2 + 2^2 + ... + %d^2 la: %ld", n, S);
/*int n,i;
int sum=0;
printf("Enter the n i.e. max values of series: ");
scanf("%d",&n);
sum = (n * (n + 1) * (2 * n + 1 )) / 6;
printf("Sum of the series : ");
for(i = 1; i <= n ; i++){
if (i != n)
printf("%d^2 + ",i);
else
printf("%d^2 = %d ",i,sum);
}*/
getch();
return 0;
} Giải thích
Đoạn code C này tính toán tổng của các số nguyên bình phương từ 1 đến n, nhưng có hai phần khác nhau: phần đầu là cách tính tổng thủ công bằng vòng lặp while, còn phần bị comment là cách tính tổng theo công thức toán học cho tổng bình phương của các số nguyên.
Hãy đi qua từng phần:
1. Phần đầu tiên (vòng lặp while):
Chương trình này tính tổng các số bình phương từ 1 đến n theo cách thủ công bằng vòng lặp.
- Khai báo và khởi tạo:
int i, n;: Khai báo hai biến nguyêni(biến đếm) vàn(biến nhập từ người dùng).long S;: BiếnSdùng để lưu tổng các bình phương.S = 0;vài = 1;: Khởi tạo giá trị ban đầu cho tổngSbằng 0 và biến đếmibằng 1.
- Vòng lặp
while:while(i <= n): Vòng lặp chạy từi = 1đếni = n.S = S + i * i;: Cộng bình phương củaivào biếnSđể cập nhật tổng.i++: Tăng giá trị củailên 1 sau mỗi lần lặp.
- Hiển thị giá trị
isau vòng lặp:printf("i = %d", i);: In ra giá trị củaikhi vòng lặp kết thúc. Doi++diễn ra sau mỗi lần lặp, giá trị cuối cùng củaisẽ làn + 1.
- In kết quả tổng bình phương:
printf("\nTong 1^2 + 2^2 + ... + %d^2 la: %ld", n, S);: In kết quả tổng các bình phương từ 1 đếnn.
2. Phần bị comment (tính tổng theo công thức):
Phần này đã bị comment, nhưng nó chứa một cách khác để tính tổng bình phương các số từ 1 đến n bằng công thức toán học trực tiếp thay vì dùng vòng lặp:
- Công thức toán học:
sum = (n * (n + 1) * (2 * n + 1 )) / 6;: Đây là công thức tính tổng các số bình phương từ 1 đếnn. Công thức này nhanh hơn vòng lặp vì chỉ cần thực hiện phép tính một lần, dựa trên giá trịn.
- In dãy số bình phương:
- Phần này sử dụng vòng lặp
forđể in từng số bình phương, từ 1 đếnn, theo định dạng:1^2 + 2^2 + ... + n^2. - Khi in ra, nó thêm dấu
+giữa các số, nhưng với số cuối cùng (khii == n), nó in dấu=và tổng cuối cùng.
- Phần này sử dụng vòng lặp
3. Kết thúc chương trình:
getch();: Chờ người dùng nhấn một phím trước khi thoát chương trình (tương tự như phần trước).return 0;: Kết thúc chương trình với giá trị trả về là 0, báo hiệu chương trình kết thúc thành công.
