Ada - 数字的素数因子分解

时间:2017-09-16 20:40:05

标签: ada prime-factoring

我在Ada的第一个家庭作业是创建一个程序,说明数字是复合数还是素数,显示其因子,然后指出其素数因子分解。例如,数字12将是复合的,1,2,3,4,6,12。素数分解2 * 2 * 3

我已经完成了,我的代码表明它是否是一个复合数,以及所有因素,只是不确定如何编码显示2 * 2 * 3的实际素数分解部分。我已经做了其余的工作,但可以使用一些见解来确定哪些代码最适合继续。

 WITH Ada.Text_IO, Ada.Integer_Text_IO;
 USE Ada.Text_IO, Ada.Integer_Text_IO;

 PROCEDURE program_one IS

    input: File_Type := Ada.Text_IO.Standard_Input;
    Value: Integer;
    AbsValue: Natural;
    factorCount: Integer := 0;

 begin
    --Open(input, In_File);

    WHILE NOT End_Of_File(input) LOOP

       IF End_Of_Line(input) THEN
          Skip_Line(input);

       ELSE
          Get(Input, Value);
          Put(Value, Width => 1);
          absValue := abs Value;
          Put(": Positive Factors are: ");

          FOR I IN Integer RANGE 1 .. absValue LOOP

             IF absValue mod I = 0 THEN
                Put(I, Width => 1);
                factorCount := factorCount + 1;

                IF I /= absValue THEN
                   Put(", ");
                END IF;

             END IF;
          END LOOP;

          New_Line;

          IF FactorCount = 2 THEN
             Put(Value, 6);
             Put(" is prime.");
          END IF;

          IF FactorCount = 1 OR FactorCount = 0 THEN
             Put(Value, 6);
             Put(" is neither prime nor composite");
          END IF;

          IF FactorCount > 2 THEN
             Put(Value, 6);
             Put(" is composite");
          END IF;

          factorCount := 0;
          New_Line;
       END IF;
    END LOOP;
    Close(Input);
 end program_one;

0 个答案:

没有答案