#include<math.h>
#include<iostream>
using namespace std;
int main() {
long long x, z = 1;
cin >> x;
for (int n = 1;;n++)
{
for (int y = 1;y <= n;y++)
{
z = z * y;
}
if (x % z == 0) {
cout << n;
break;
}
}
}
在 for (int y = 1;y <= n;y++)前面加一句:z = 1; 每次循环都需要把z重置为1
#include<math.h>
#include<iostream>
using namespace std;
int main() {
long long x, z = 1;
cin >> x;
for (int n = 2;x <n;n++)
{
z = 1; //注意这里,每次循环都要把z重置为1
for (int y = 1;y <= n;y++)
{
z = z * y;
}
if (x % z == 0) {
cout << n;
break;
}
}
return 0;
}
不是要!=0么,为什麽你判断x%z==0呢?
n=1时,y循环只能是y=1,那么z=z*y也是1,任何数对1求余只能是0,0==0必然成立啊
for (int n = 1;;n++)
{
z = 1;
for (int y = 1;y <= n;y++)