C++ 求帮debug

问题遇到的现象和发生背景

C++ 运行检测出现问题

用代码块功能插入代码,请勿粘贴截图
#include 
using namespace std;

int main()
{
    int n,p;
    cin >> n >> p;
    int m = 1;
    for(int i=1;i<=n;i++)
    {
        m *= i;
    }
    int a = 0;
    for(int j=1;jif(m % p != 0) break;
        else
        {
            m /= p;
            a++;
        }
    }
    cout << a;
    return 0;
}

运行结果及报错内容

img

img

这个题目有问题,没有限定n的取值范围

阶乘大于17后溢出,n的值要小于17.

img


显示中间值代码:

#include <iostream>
using namespace std;
 
int main()
{
    int n,p;
    cin >> n >> p;
    int m = 1;
    for(int i=1;i<=n;i++)
    {
        m *= i;cout<<m<<" ";
    }
    int a = 0;
    cout<<endl<<m<<": ";
    for(int j=1;j<m/p;j++)
    {
        if(m % p != 0) break;
        else
        {
            m /= p;
            cout<<p<<'*';
            a++;
        }
    }
    cout <<"other"<<endl;
    cout << a;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
long long int n,p,k=2,s;
int main()
{
    cin >> n >> p;
    long long int m=1;
    for(int i=1;i<=n;i++)
        m *= i;
    while(m!=1)
    {
        if(m/k==1)
        {
            s++;
            break;
        }
        if(m%k!=0)
            k++;
        m/=k;
        if(k==p)
            s++;
    }
    cout << s;
    return 0;
}

这道题不需要算阶乘的值 直接取一数算一个数就行了。比如1 * 2 * 3 * 4 * 5 * 6 就1到6去每个去算p的质因数个数就行