发布网友 发布时间:2022-04-23 17:36
共6个回答
热心网友 时间:2023-10-11 07:33
这里不是3个flag 是一个flag
flag起到标识作用 为1表示是质数 为0表示不是质数
首先初始化为1 然后在循环里如果能被2-K的数整除 即i%j == 0 说明他有非0因子 不是质数 所以会 flag归0
最后if判断flag 如果是1 就输出质数 如果是0 则不
热心网友 时间:2023-10-11 07:33
程序是输出100以内的素数,flag是标记(和if一起用时起个开关作用,),
默认值为1,即默认打开,输出正被判断的数i(i即为素数);
当i能被比它小的数整除时,flag=0,即关闭输出(i不是素数,不输出)。
热心网友 时间:2023-10-11 07:34
一般来说 flag是用来表示标记
不同数值代表不同含义
在这里flag表示 质数1 合数 0
在这里flag默认为1
如果函数出现整除的情况 if(i%j == 0)
修改标记位为1
输出时判断如果标记位为1 if (flag)
输出是质数
热心网友 时间:2023-10-11 07:34
程序中的flag仅仅是作为一个标识来用,最后如果flag为0表示该数可以被3和5整除,要是为-1表示不能为3和5整除。
热心网友 时间:2023-10-11 07:35
2楼说的很详细 flag不是3个 只是起标识作用的一个变量罢了 1表示是质素 0表示不是质数
热心网友 时间:2023-10-11 07:36
你看 i=2的时候执行的是
while(i <= 100)
{
flag = 1;
k = sqrt(i); 是一个范围
j = 2; 在j<=k时 且i/2 =0 的时候就不是质数 所以flag=0 所以不打印
flag=1
意思是当flag=1的时候就是质数
flag=0的时候是不做
if (flag)
cout << i << "是质数." << endl;
i++;
这个的
if (flag) 括号里表示是真 意思就是1的时候执行
能懂吗?