永发信息网

求正整数 pascal

答案:2  悬赏:50  手机版
解决时间 2021-06-06 04:06

题目

对于任意输入的正整数n,请编程求出至少具有n个不同因子的最小正整数m。
如n=4,则m=6,因为6含有4个不同整数因子1,2,3,6;而且是最小的有4个因子的整数。

输入

n(1≤n≤50)

输出

m

样例输入

4 5 6

样例输出

6 12 12

最佳答案

vijos上的原题啊,以下是vijos p1229通过的代码


const
num:array[1..10]of longint=(2,3,5,7,11,13,17,19,23,29);
lim:array[1..10]of longint=(14,9,6,5,4,3,3,3,3,2);
var
n,min:longint;
f,t:array[0..29,0..15]of longint;
procedure init;
begin
readln(n);
min:=maxlongint;
fillchar(f,sizeof(f),255);
end;
function get(a,b:longint):longint;
begin
if f[a,b]<0 then
begin
if b=0 then f[a,b]:=1
else
f[a,b]:=get(a,b-1)*a;
end;
get:=f[a,b];
end;
procedure find(m,k,c:longint);
var
j:longint;
begin
if c>20000 then exit;
if m>n then exit;
if k>10 then
begin
if m=n then
if c<min then min:=c;
exit;
end;
j:=0;
while (m*(j+1)<=n)and(j<=lim[k]) do
begin
if n mod (m*(j+1))=0 then
begin
find(m*(j+1),k+1,get(num[k],j)*c);
end;
inc(j);
end;
end;
begin
init;
find(1,1,1);
if min=maxlongint then writeln('NO SOLUTION')
else
writeln(min);
end.

全部回答
program p1;var g,k,n,r:integer;begin readln(k); for n:=k to 20000 do begin g:=0; for r:=1 to trunc(sqrt(n)) do if n mod r=0 then if n div r=r then inc(g) else g:=g+2; if g=k then begin writeln(n);halt;end; end; writeln('NO SOLUTION');end.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
岳麓区长沙华佳家庭旅馆(裕民巷)这个地址怎么
最近很想吃饭怎么回事
拉頭髮好不好
我这号为什么那么垃圾?
和女朋友之间需要送什么礼物吗?
AVA能转邦或取消绑定的大区吗?我是网通用户
高丝雪肌精敏感皮肤用了会不会过敏?
1若以小明所戴的的帽子为参照物,出租车是运
开福区长沙新常态国际美容养生地址在哪,我要
你会娶心里有别人的女人么?
男士健康常识
有没有好用点的BB霜介绍一下,谢谢
梦幻这个白熊怎么加点
冬天室内种什么花即经济实惠又不怕冻?
栾川县洛阳领绣刺绣墙布我想知道这个在什么地
推荐资讯
怎样找回淘宝密码,?
我喜欢的谁?
会计分录会的帮一下哦!
从上街到郑州火车站怎么坐车?
笔记本重装系统后,外置键盘键盘上的附加键没
DNF安徽2区斩重下身价格
黄体酮应怎样服用?有副作用吗?
广州哪里有批发(香水的配件包括香水)
他喜欢她,但她喜欢另一个他,怎么办
我的游戏人生开通了 为什么没有显示到这里 点
预见未来(惊魂下一秒)有第二部么
谁能告诉我这个音乐叫什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?