2016-03-14 2 views
0
data primes; 
    length status $12.; 
    do i=1 to 4; 
    status='Prime'; 
     do j=2 to i-1; 
     if mod(i, j) = 0 then do; 
     status='Composite'; 
     leave; *exit loop; 
    end; 
end; 
     output; 
    end; 
    run; 

    proc print data = primes; 
     run; 

Выше была программа, в которой я бежал, а ниже - выход. Я не могу понять, как значение i, когда числа являются первыми. Я упомянул, что должен идти до n-1, но на выходе значение i = n для простых чисел. Может кто-то, пожалуйста, помогите мне понять это?Невозможно понять выход с использованием заявления на отпуск

   Obs  status i j 
       1 Prime  1 2 
       2 Prime  2 2 
       3 Prime  3 3 
       4 Composite 4 2 

ответ

1

Если i = 1, то второй цикл равен j = 2 to 0, что означает, что цикл никогда не запускается. Петля j никогда не выполняется. Вы можете добавить явное выражение output или put, чтобы увидеть это.

Смежные вопросы