chengruicheng 2015-02-14 06:13:40
点我顶贴
收藏
删除
还是比较简单的一道题的,但是得用qword:
var n,x:qword;
function fenjie(a:qword):qword;
var i:longint;
begin
for i:=2 to trunc(sqrt(a)) do
if a mod i=0 then exit(i);
exit(a);
end;
begin
read(n);
repeat
x:=fenjie(n);
n:=n div x;
write(x,' ');
until n=1;
end.
#1 Sentinel Prome@2015-07-06 03:23:32
33325
回复
删除
lz 思路不错但不需要这么烦,又不会超时
var n:int64; i,j:longint;
begin
readln(n);
for i:=2 to n div 2 do
begin
if n mod i =0 then
repeat
write(i,' ');
n:=n div i;
until n mod i<>0;
if n=1 then break;
end;
end.
#2 sbsbt@2018-08-02 03:52:23
34541
回复
删除
不用那么麻烦
var
a,i:int64;
begin
read(a);
while a<>1 do
begin
i:=2;
while i<=a do
begin
if a mod i=0 then begin
write(i,' ');
a:=a div i;
break;
end;
i:=i+1;
end;
end;
end.
#3 Dream86333@2021-11-25 03:05:57
34830
回复
删除
#include<iostream>
using namespace std;
int main()
{
int n,i=2;
cin>>n;
while(n!=1)
{
while(n%i==0)
{
n/=i;
cout<<i<<" ";
}
i++;
}
return 0;
}