You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

素数生成与打印代码错误排查:结果不符预期问题

素数筛选函数的问题修复

你编写的素数筛选函数存在两个关键问题,导致输出不符合预期:

  • 数组中错误存入了试除变量i而非当前判断的数count,导致开头出现重复的2;
  • 因存储对象错误,最终丢失了本该存入的目标素数。

原代码

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#define MAX 100

int func(int lim,int aa[MAX])
{
  int i,count,num;
  num = 0;
  for(count = 2;count<lim;count++)
  {
    for(i=2;i<=sqrt(count);i++)
    {
        if(count%i==0) 
          break;
    }
    if(i>sqrt(count))
        {
           aa[num]=i;
           num++;
        }   
  }
  return num;
}


int main()
{
  int limit,i,sum;
  int aa[MAX];
  printf("Please input an integer:");
  scanf("%d",&limit);
  sum=func(limit,aa);
  for(i=0;i<sum;i++)
  {
    if(i%10==0&&i!=0) 
       printf("\n");
    printf("%5d",aa[i]);
  }

  return 0;
}

错误分析

  1. 存储对象错误:当判断count是素数时,你将i存入数组,但i是用来试除的变量,而非当前的素数count。比如count=2时,内层循环不执行,i=2被存入;count=3时,内层循环同样不执行,i=2再次被存入,导致开头出现重复的2;而count=5时,i最终会到3,此时存入的是3而非5,导致丢失了素数5。
  2. 冗余头文件:#include <conio.h>和#include <string.h>未被使用,可移除以精简代码。

修复后的代码

#include<stdio.h>
#include<math.h>
#define MAX 100

int func(int lim, int aa[MAX])
{
    int i, count, num;
    num = 0;
    for(count = 2; count < lim; count++)
    {
        int sqrt_count = sqrt(count); // 提前计算平方根,避免重复调用与浮点精度问题
        int is_prime = 1; // 用标记位简化素数判断逻辑
        for(i = 2; i <= sqrt_count; i++)
        {
            if(count % i == 0)
            {
                is_prime = 0;
                break;
            }
        }
        if(is_prime)
        {
            aa[num] = count; // 存储当前判断的素数count
            num++;
        }
    }
    return num;
}

int main()
{
    int limit, i, sum;
    int aa[MAX];
    printf("Please input an integer:");
    scanf("%d", &limit);
    sum = func(limit, aa);
    for(i = 0; i < sum; i++)
    {
        if(i % 10 == 0 && i != 0)
            printf("\n");
        printf("%5d", aa[i]);
    }
    printf("\n"); // 末尾添加换行,优化输出格式

    return 0;
}

修复效果

输入6时,会正确输出:

2    3    5

彻底解决了重复值和素数丢失的问题,同时优化了代码逻辑与可读性。

内容的提问来源于stack exchange,提问作者Levis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:25:24