求2—100中,每个数的质因子,输出如下形式:2=2,3=3,4=2*2...100=2*2*5*5)
提示:质因子也即素数因子.在找质因子的过程中,可以不必判断它是否为素数,只要算法合适,所求的因子必然是质因子.

解决方案 »

  1.   

    Var
      a, b: Array[1..100] OF Longint;
      k, temp, i, j, n, t, l: longint;
    Function check(i: Longint): Boolean;
    Var
      j: longint;
    Begin
      check := true;
      for j:=2 To i-1 DO
        if i mod j = 0 Then Begin check := false; Exit; End;
    End;begin
      For i:=2 TO 100 Do
        if check(i) Then Begin
          inc(t);
          a[t] := i;
        End;  For i:=2 To 100 Do Begin
        n := i;
        l := 0;
        while n <> 1 Do Begin
          for j:=1 TO t Do
            if n mod a[j] = 0 THen Begin
              inc(l);
              b[l] := a[j];
              n := n Div a[j];
            End;
        End;
        For j:=1 To l-1 DO
          for k:=j + 1 To l DO
            if b[j] > b[k] Then Begin temp := b[j]; b[j] := b[k]; b[k] := temp; End;
        Write(i, ' = ', b[1]);
        For j:=2 To l DO Write('*', b[j]);
        Writeln;
      End;
    End.
      

  2.   


            private void test()
            {
                List<int> list = new List<int>();            for (int i = 2; i <= 100; i++)
                {
                    int temp = i;
                    for (int j = 2; j <= temp; j++)
                    {
                        if (temp % j == 0)
                        {
                            list.Add(j);
                            temp = temp / j;
                            j = 1;
                        }
                    }
                    string str = i + "=";
                    for (int k = 0; k < list.Count; k++)
                    {
                        if (k != 0)
                        {
                            str += "*";
                        }
                        str += list[k];
                    }
                    label1.Text += str + "\n";
                    list.Clear();
                }
                
            }
      

  3.   


            private void test()
            {
                string str="";
                for (int i = 2; i <= 100; i++)
                {
                    int temp = i;
                    str += i + "=";
                    for (int j = 2; j <= temp; j++)
                    {
                        if (temp % j == 0)
                        {
                            str += j + "*";
                            temp = temp / j;
                            j = 1;
                        }
                    }
                    str = str.Substring(0, str.Length - 1);
                    str += ",";
                }
                
            }
    //"2=2,3=3,4=2*2,5=5,6=2*3,7=7,8=2*2*2,9=3*3,10=2*5,11=11,12=2*2*3,13=13,14=2*7,15=3*5,16=2*2*2*2,17=17,18=2*3*3,19=19,20=2*2*5,21=3*7,22=2*11,23=23,24=2*2*2*3,25=5*5,26=2*13,27=3*3*3,28=2*2*7,29=29,30=2*3*5,31=31,32=2*2*2*2*2,33=3*11,34=2*17,35=5*7,36=2*2*3*3,37=37,38=2*19,39=3*13,40=2*2*2*5,41=41,42=2*3*7,43=43,44=2*2*11,45=3*3*5,46=2*23,47=47,48=2*2*2*2*3,49=7*7,50=2*5*5,51=3*17,52=2*2*13,53=53,54=2*3*3*3,55=5*11,56=2*2*2*7,57=3*19,58=2*29,59=59,60=2*2*3*5,61=61,62=2*31,63=3*3*7,64=2*2*2*2*2*2,65=5*13,66=2*3*11,67=67,68=2*2*17,69=3*23,70=2*5*7,71=71,72=2*2*2*3*3,73=73,74=2*37,75=3*5*5,76=2*2*19,77=7*11,78=2*3*13,79=79,80=2*2*2*2*5,81=3*3*3*3,82=2*41,83=83,84=2*2*3*7,85=5*17,86=2*43,87=3*29,88=2*2*2*11,89=89,90=2*3*3*5,91=7*13,92=2*2*23,93=3*31,94=2*47,95=5*19,96=2*2*2*2*2*3,97=97,98=2*7*7,99=3*3*11,100=2*2*5*5,"