我瑀 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;
}
#2 VastUniverse_Hory@2021-07-27 23:40:15
34829
回复
删除
用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;
}