永发信息网

free pascal编程求2-100中每个数的质因子.

答案:2  悬赏:80  手机版
解决时间 2021-03-20 10:09
2=2
3=3
4=2*2
....
99=3*3*11
100=2*2*5*5;
且告诉我每一步的意思
最佳答案
这个简单。思路就是:一个大循环,i := 2 to 100 对每个数i作质数分解。 所以关键是对某个整数作分解。 以99这个数为例说明,除数先从最小的质数2开始,99不能被2整数,除数+1 = 3; 99可以被3整除,记录这个质数3, 然后99÷3=33后继续被3整数,又的得11,再次记录质数3; 这时11不能被3整数了,不用记录3, 那么除数+1=4; 11不能被4整除,继续除数+1=5,。。。,直到11,可以整除,记录11,剩余的数是1,过程结束。注意:结束的条件有两个,一是剩余的数=1;二是这个除数+1的过程直到除数>99 div 2 = 44为止,这是因为假设n = a·b成立,a的最小质数取值范围是2,那么b的最大取值范围≤n÷2,因此超过范围的b取值,无意义,只是增加循环的次数而已。


代码如下:
...
var
  i : integer;
begin
  // 求2~100的每个数的因子
  for i := 2 to 100 do
    Writeln (IntToStr(i) + '=' + factorDecomp (i)); //调用因子分解函数,按格式输出。

end;
...          
function factorDecomp(const num : Integer) : String;
var
  sDF : String;
  nRest : Integer;
  nDivisor : Integer;
begin
  nDivisor := 2; //除数从2开始
  nRest := num; // num是需要分解的整数
  sDF := ''; //sDF是记录质数因子的字符串,格式: 2*2*5*5
  repeat     // 除数从2开始的循环
    while (nRest mod nDivisor = 0) do
    begin
         // 记录发现的因子。 如果是第1个发现的,直接记录;否则按*n这种方式记录。
         if length(sDF) = 0 then
           sDF := IntToStr(nDivisor)
         else
           sDF := sDF + '*' + intToStr(nDivisor);

         nRest := nRest div nDivisor; // 把分解剩下的数赋值给nRest,继续同一个因子的分解
    end;
    inc (nDivisor); //除数+1, 继续分解。
  until (nRest = 1) or (nDivisor > num div 2); //结束条件,余下的数=1或除数超过num的一半

  if length(sDF) = 0 then  //如果没有输出,那么该数无法分解,记录该数即可
    sDF := IntToStr(num);

  Result := sDF; //返回最后的结果,格式: n或者n1*n2*n3...
end;
全部回答
我也是学pascal 在学校有老师教 学习主要目的就是参加noip比赛 建议你学这本书 这本书还是比较全面,自学的话也比较合适,当然有老师教更好
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
朱祠堂怎么去啊,有知道地址的么
唐慧茹唱的什么歌
烘干土重和干土重一样吗
军人和运动员比谁的体能好
十神的关系
2006年毕业生是哈医大第几期学员,如何分期
新沂市心连心志愿者协会在哪里啊,我有事要去
电路图vR1是什么
房子过户后房东耍赖不交钥匙怎么办
《青岛市城市总体规划(2011-2020)》去哪查
亲人的劝告不听信外人的话用文言文怎么讲
腹腔镜做完双侧卵巢畸胎瘤出院7天了小肚子疼
手表里有水雾怎么办
“如有来生,愿鲁且愚”是什么意思?出自哪里
拴先查什么部再查什么画读音是什么
推荐资讯
PS制做完了怎么保存?,
积家手表怎么样?
1986年的正月十五是属什么
个人商业用房贷款的期限和额度有没有限制
施麦贝环氧地坪是什么?
都市118连锁酒店武汉建设大道店地址在什么地
绿态车U可以做什么用?有效果吗?
5x=7(x-5)
淮滨县天宇建筑安装有限公司地址有知道的么?
腋臭主要发生在哪些部位呢?
买房遭遇阴阳条款引纠纷官司怎么打?
百圆手机城(楚候店)怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?