在下面的C程序片段中,j,kn和TwoLog_n是整数变量,而A是整数数组。变量n初始化为≥3的整数,TwoLog_n初始化为2 *⌈log2(n)⌉的值
for (k = 3; k < = n; k++)
A[k] = 0;
for (k = 2; k < = TwoLog_n; k++)
for (j = k + 1; j < = n; j++)
A[j] = A[j] || (j % k);
for (j = 3; j < = n; j++)
if (!A[j]) printf("%d", j);
该程序片段打印的数字集为
(A) {m | m≤n,(∃i)[m = i!]}在这里,i!我的平均阶乘
(B) {m | m≤n,(∃i)[m = i 2 ]}
(C) {m | m≤n,m为质数}
(D) {}答案: (D)
说明:选项(D)是正确的,因为如果取n = 4,则TwoLog_n的值为4。
第一循环初始A [3] = A [4] = 0;
然后两个循环k = 2至4和j = 3至4
if k=2
j=3 A[3] = A[3] || (3%2)
= 0 || 1
A[3] = 1
j=4 A[4] = A[4] || (4%2)
= 0 || 0
A[4] = 0
K=3
j=4 A[4] = A[4] || (4%3)
= 0 || 1
A[4] = 1
K=4
J=5 condition false means terminate
A[3] = A[4] = 1
意味着最后一个打印循环永远不会执行。这个问题的测验