前言
“风萧萧兮易水寒,嘟嘟是个大美男。”欢迎来到嘟嘟课堂。今天嘟嘟老师给大家讲一道淼题——质因数分解。
题目描述
已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数。
输入
已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数。
输出
输出只有一行,包含一个正整数p,即较大的那个质数。
样例输入
21
样例输出
7
数据范围限制
对于60%的数据,6 ≤ n ≤ 1000。
对于100%的数据,6 ≤ n ≤ 2*10^9。
思路
有点同学把这道题想复杂了。其实很简单,就是一道循环暴力题。一个循环,for i:=2 to n do,首先判断i是否是n的因数,在判断i是否是质数,再去其中最大的数就行了。
代码
var
i,j,n,max:longint;
function sb(n:longint):boolean;
var
i:longint;
p:boolean;
begin
p:=true;
for i:=2 to trunc(sqrt(n)) do
begin
if (n mod i=0) then
begin
p:=false;
break;
end;
end;
if p then sb:=true;
end;
begin
assign(input,'prime.in');reset(input);
assign(output,'prime.out');rewrite(output);
readln(n);
max:=-maxlongint;
for i:=2 to trunc(sqrt(n)) do
begin
j:=n div i;
if (n mod i=0) and (sb(i)=true) and (sb(j)=true) then
begin
if (j>i) and (j>max) then max:=j
else if (i>j) and (i>max) then max:=i;
end;
end;
writeln(max);
close(input);
close(output);
end.