Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tổng của N số tự nhiên đầu tiên chia hết cho X hoặc Y

Cộng tất cả các số tự nhiên với n, chia hết cho X hoặc Y là chọn tất cả các số chia hết cho X hoặc Y và thêm chúng vào một biến lưu trữ tổng.

Để tìm tổng của N số tự nhiên đầu tiên chia hết cho X hoặc Y, có hai phương pháp -

  • Sử dụng vòng lặp và câu lệnh điều kiện
  • Sử dụng công thức

Phương pháp 1 - Sử dụng vòng lặp và câu lệnh điều kiện

Phương pháp này sử dụng một vòng lặp đếm tối đa n số và chọn các số chia hết cho X hoặc Y rồi cộng chúng và lưu vào một biến ở mỗi lần lặp.

Mã mẫu

#include <stdio.h>
int main(void) {
   int n = 54;
   int x = 2 ;
   int y = 5;
   int sum = 0;
   for(int i = 0; i<= n; i++) {
      if(i%x == 0 || i% y == 0)
         sum = sum + i;
   }
   printf("sum of %d natural numbers divisible by %d and %d is %d" ,n,x,y,sum);
   return 0;
}

Đầu ra

sum of 54 natural numbers divisible by 2 and 5 is 881

Phương pháp 2 - Sử dụng công thức,

Phương pháp này sử dụng công thức để tìm tổng của n số đầu tiên chia hết cho một số.

Điều này có thể được tìm thấy bằng cách sử dụng công thức - SN / X =((N / X) / 2) * (2 * X + (N / X - 1) * X)

Sử dụng công thức này ta tìm được tổng của n số tự nhiên chia hết cho x - S n / x =((n / x) / 2) * (2 * x + (n / x - 1) * x)

Sử dụng công thức này, ta tìm thấy tổng của n số tự nhiên chia hết cho y - S n / y =((n / y) / 2) * (2 * y + (n / y - 1) * y)

Bây giờ, sử dụng công thức này, tìm thấy tổng của n số tự nhiên chia hết cho x và y:S n / x * y =((n / (x * y) / 2) * (2 * (x * y) + (n / (x * y) - 1) * (x * y))

Bây giờ, chúng ta sẽ cộng tổng của x và tổng của y và trừ tổng của x * y được cộng hai lần.

Mã mẫu

#include <stdio.h>
int main() {
   int n = 54;
   int x = 2, y = 5;
   int Sx, Sy, Sxy, sum;
   Sx = ((n / x)) * (2 * x + (n / x - 1) * x) / 2;
   Sy = ((n / y)) * (2 * y + (n / y - 1) * y) / 2;
   Sxy= ((n / (x * y))) * (2 * (x * y) + (n / (x * y) - 1) * (x * y))/ 2;
   sum = Sx + Sy - Sxy;
   printf("sum of %d natural numbers divisible by %d and %d is %d" ,n,x,y,sum);
   return 0;
}

Đầu ra

sum of 54 natural numbers divisible by 2 and 5 is 881

Phương pháp thứ hai tốt hơn vì nó không sử dụng bất kỳ vòng lặp nào có nghĩa là độ phức tạp về thời gian tốt hơn. Nhưng nếu các trường hợp đầu vào nhỏ hơn trường hợp đầu tiên cũng có thể được sử dụng. Nhưng đối với các trường hợp đầu vào lớn, phương pháp thứ hai không phải là lựa chọn tốt nhất.