永发信息网

分解因式pascal

答案:5  悬赏:40  手机版
解决时间 2021-03-10 11:54
  • 提问者网友:最美的风景
  • 2021-03-09 14:03
一个自然数N的正因子个数记为F(N),例如18的所有正因子为1、2、3、6、9、18,所以F(18)=6。现在给出K,求所有满足F(N)=K的N中最小的数.
要求pascal语言完成。
Input
第一行n,表示有n个数据,1<=n<=10
接下来n行,每行一个数k,1<=k<=65536
Output
输出n行,每行一个解
对于每个解,按照算术基本定理输出它的素数唯一分解,例如:
如果解是6936,则输出2^3*3*17^2(按素因子从小到大的顺序)
Sample Input
2
5
7
Sample Output
2^4
2^6

不对~~!
我要的是Pascal语言啊三楼!~
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-03-09 15:28
要优化:
program temp;
var i,n,k:longint;
begin
readln(n);
for i:=1 to n do begin
readln(k);
if k=1 then writeln(1) else writeln('2^',k-1);
end;
end.
全部回答
  • 1楼网友:人類模型
  • 2021-03-09 20:43
呵呵其实是跟数学有关的问题,你要用计算机做的就是将输入的数分解为若干个质数相乘,用递归的思路。
首先,一个数n的最大的质因数绝不超过根号n,也就是说,你可能得到的最大质因数为44721
用x数组装得到的不同的质因数,用y数组装第i个质因数的个数
用m记当前不同质因数的个数
那么分解完以后,你要做的就是将y数组里的每一个数加1,然后将它们全部相乘
这是利用排列组合的思想得到的

如果需要程序的话跟我说吧,以上是你要的思路
  • 2楼网友:掌灯师
  • 2021-03-09 19:33
方法1.枚举n(显然超时) 方法2.对k进行因式分解(像3l一样,但是不一定是质因子),排序,找最小的一个。要用高精度的吧。。。而且复杂度不好估计 方法3.dp。dp[i][j]表示k=i时n最小。条件是n分解质因数时最大的质数为第j号质数。也要用到高精度,甚至快速取幂。。。 没有特别好的方法。。。
  • 3楼网友:妄饮晩冬酒
  • 2021-03-09 18:12
把K因式分解 若分为K=a*b*c*d 令a>b>c>d 按照素数表顺序 n应为2^(a-1)*3^(b-1)*5^(c-1)*7^(d-1) n一定最小
  • 4楼网友:一叶十三刺
  • 2021-03-09 17:04
//当我没说过。。。。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯