讨论 / 测试点10过不去,请求帮助!
我瑀 2016-08-10 03:26:54
点我顶贴 收藏 删除
#include<cstdio>

using namespace std;

void fenjie(long long n)

{

for(long long k=2;k<=n;k++)

while(n!=1)

if(n%k==0)

{

printf("%d ",k);

n=n/k;

}

else

break;

}

int main()

{

long long n;

scanf("%d",&n);

fenjie(n);

return 0;

}

#1 基佬@2016-10-02 20:08:08
回复 删除
定义大一点不就行了!

#2 VastUniverse_Hory@2021-07-27 23:40:15
回复 删除
用unsigned long long。

而且方法有问题:

从2开始,不断加1,重复执行执行直到大于n,n里面有多少i就输出多少次,同时除以i。

正确代码:

#include <bits/stdc++.h>

using namespace std;

int main()

{

unsigned long long n;

cin >> n;

for (unsigned long long i = 2; i <= n; i ++)

{

while (n % i == 0)

{

cout << i << ' ';

n /= i;

}

}

return 0;

}

查看更多回复
提交回复