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

Tích các thừa số trong C ++


Cho một số n, chúng ta phải tìm tất cả các thừa số của nó và tìm tích của các thừa số đó và trả về kết quả, tức là tích các thừa số của một số. Thừa số của một số là những số có thể chia hết số đó bao gồm 1. Giống như thừa số của 6 là - 1, 2, 3, 6.

Bây giờ theo nhiệm vụ, chúng ta phải tìm tích tất cả các thừa số của số.

Đầu vào - n =18

Đầu ra - 5832

Giải thích - 1 * 2 * 3 * 6 * 9 * 18 =5832

Đầu vào - n =9

Đầu ra - 27

Giải thích - 1 * 3 * 9 =27

Phương pháp tiếp cận được sử dụng bên dưới như sau để giải quyết vấn đề -

  • Lấy số đầu vào.

  • Lặp lại từ i =1 đến i * i <=num

  • Sau đó, kiểm tra xem num% i ==0, hãy kiểm tra

    • Nếu num% i ==i thì hãy đặt giá trị của product =(product * i)% 1e7

    • Khác Đặt sản phẩm là (product * i)% MAX và Đặt sản phẩm là (product * num / i)% MAX.

  • Trả lại sản phẩm.

Thuật toán

Start
In Function long long productfactor(int num)
   Step 1→ Declare and Initialize product as 1
   Step 2→ For i = 1 and i * i <= num and i++
      If num % i == 0 then,
      If num / i == i then,
         Set product as (product * i) % MAX
      Else
         Set product as (product * i) % MAX
         Set product as (product * num / i) % MAX
   Step 3→ Return product
In Function int main()
   Step 1→ Declare and initialize n as 9
   Step 2→ Print the result productfactor(n)
Stop

Ví dụ

#include <stdio.h>
#define MAX 1000000000
// find the product of the factors
long long productfactor(int num){
   long long product = 1;
   for (int i = 1; i * i <= num; i++){
      if (num % i == 0){
         //equal factors should be multiplied only once
         if (num / i == i)
         product = (product * i) % MAX;
         // Else multiply both
         else {
            product = (product * i) % MAX;
            product = (product * num / i) % MAX;
         }
      }
   }
   return product;
}
int main(){
   int n = 9;
   printf("%lld\n", productfactor(n));
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

27