Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หากกำลังของจำนวนเฉพาะ p ใน n! ด้วย C++


ในปัญหานี้ เราได้รับตัวเลข n และจำนวนเฉพาะ p ภารกิจของเราคือ หากำลังของจำนวนเฉพาะ p ใน n!

มาดูตัวอย่างเพื่อเข้าใจปัญหา

Input : n = 6, p = 2 Output : 4

วิธีการแก้ปัญหา

วิธีแก้ปัญหาแบบง่ายคือการหาค่า n! แล้วแยกตัวประกอบ และหากำลังของจำนวนเฉพาะ p ในการแยกตัวประกอบ

ที่นี่ ตัวเลขสามารถแสดงเป็นการแยกตัวประกอบกำลังของ 2 ใน 5! = 30 คือ 3

ค่าของ n factorial คือ

$$n!\:=\:n^*(n-1)^*(n-2)^*(n-3)\dotso{^*}2^*1$$ 

$$n!\:=\:3^*2^*1\:=\:6$$

ลอง n = 6 และ p = 2,

n! = 6! = (2*3*4*5*6)

n! = 720

การแยกตัวประกอบของ 720 คือ 2*2*2*2*3*3*5

กำลังของ 2 ในการแยกตัวประกอบของ 6! คือ 4

ดังนั้น ผลลัพธ์คือ 4

ตัวอย่าง

โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา

#include <iostream> using namespace std; int powerOfPrimeNfactorial(int N, int P){ int primePower = 0; int factVal = P; while (factVal <= N) { primePower += N / factVal; factVal = factVal * P; } return primePower; } int main(){ int N = 6; int P = 2; cout<<"The power of prime number "<<P<<" in "<<N<<"! is "<<powerOfPrimeNfactorial(N, P) << endl; return 0; }

เอาต์พุต

The power of prime number 2 in 6! is 4