C错题纠正

该文章展示了一段C语言代码,用于找出并打印100到200之间的所有素数。代码通过两个嵌套循环检查每个数字的因子,如果因子数量仅为2(1和数字本身),则标记为素数。原代码有一个错误,未在外部循环前重置变量b,导致无法正确判断素数。修正后的代码在外部循环开始时将b重置为0。
摘要由CSDN通过智能技术生成

输出100-200内的素数

原答案:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int i = 0;
    int a = 1;

    int b = 0;
    for (i = 100; i <= 200; i++)
    {
         
        for (a = 1; a <= i; a++)
        {
            if (i % a == 0)
                b++;//i%a==0,则说明此时的a是i的因子,则b+1;

        }

        if (b == 2)//b如果等于2,则说明i的因子只有两个,即1和他本身
            printf("%d,", i);

    }

    return 0;

}

正确答案

 #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int i = 0;
    int a = 1;

    int b = 0;
    for (i = 100; i <= 200; i++)
    {
         b=0;//注意b=0的位置
        for (a = 1; a <= i; a++)
        {
            if (i % a == 0)
                b++;//i%a==0,则说明此时的a是i的因子,则b+1;

        }

        if (b == 2)//b如果等于2,则说明i的因子只有两个,即1和他本身
            printf("%d,", i);

    }

    return 0;

}

题目中如果b没有在两循环之间赋值为零的话,那么b的数值就会一直增加,以至于无法完成素数的判断

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值