为了账号安全,请及时绑定邮箱和手机立即绑定

大神求帮助,我有两个地方不是很懂;题目是找出1000以内的质数(大于1的自然数且只能被1和本身整除的数)

大神求帮助,我有两个地方不是很懂;题目是找出1000以内的质数(大于1的自然数且只能被1和本身整除的数)

C
叫什么名字好呢1 2016-07-28 22:02:39
#include <stdio.h> int main(void) { int i, num; unsigned long counter = 0;//定义运算的次数 num = 2; printf("%d\n", num++);//这一步跟下面的循环有什么联系吗?为什么没有输出来呢? for (; num <= 1000; num += 2)//这个地方num+=2为什么说是只把奇数作为判断对象?  { for (i = 2; i < num; i++)  { counter++; if (num % i == 0) break; } if (num == i) printf("%d\n", num); } printf("乘除运算的次数: %lu\n", counter); return 0; }
查看完整描述

2 回答

已采纳
?
luofuxiang

TA贡献34条经验 获得超34个赞

解释写在代码注释里,楼主请“移目”。╰( ̄▽ ̄)╭

#include <stdio.h>
int main(void)
{
    int i, num;
    unsigned long counter = 0;//定义运算的次数

    num = 2;

    printf("%d\n", num++);//这里有输出,2 就是输出的结果
    //上面那句的执行流程是,先打印num(即:2),然后num自增1(即num = num +1;),此时num = 3;
    for (; num <= 1000; num += 2)//执行到这里时num=3,每次+2,
    {                            //判断对象的序列为3,5,7,9,...,所以说只把奇数作为判断对象
        for (i = 2; i < num; i++)
        {
            counter++;
            if (num % i == 0)
                break;
        }
        if (num == i)
            printf("%d\n", num);
    }

    printf("乘除运算的次数: %lu\n", counter);

    return 0;
}


查看完整回答
3 反对 回复 2016-07-28
?
L49579

TA贡献3条经验 获得超1个赞

 printf("%d\n", num++);//这一步跟下面的循环有什么联系吗?为什么没有输出来呢?

 //这里输出了2,然后num自加1

for (; num <= 1000; num += 2)//这个地方num+=2为什么说是只把奇数作为判断对象?

// 大于2的偶数都不是素数,因此不需要对大于2的偶数进行判断 

查看完整回答
1 反对 回复 2016-07-29
  • 2 回答
  • 1 关注
  • 1971 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信