请问这个程序应该怎么改进

img

我现在这个程序要求输入一个数,要求把比这个数小的素数写出来,但我这个只能写出小于这个数的非素数,而且还会重复几次,请问该怎么办

#include<stdio.h>
int main()
{
  int i,j,num;
  scanf("%d",&num);
  if(num>0){
    for(i=2;i< num;i++){
      for(j=2;j<i ;j++){
        if(i%j==0)
              break;
      }
      if(i==j)
        printf("%d ",i);
    }
  }else{
    printf("error");
  }
  return 0;
}

img

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa[MAX])
{
    int i, j,k=0;
    for (i = 2; i <= lim; i++)//罗列每个数
    {
        for (j = 2; j < i; j++)//判断是否为质数(素数:只可以被1和本身整除,必须大于1)
        {
            if (i%j == 0)    break;
        }
        if (j >= i)    aa[k++] = i;
    }
    return k;
}
void main()
{
  int limit,i,sum;
  int aa[MAX];
  printf("输入一个整数:");
  scanf("%d",&limit);
  sum=fun(limit,aa);
  for(i=0;i<sum;i++)
     {
      if(i%10==0&&i!=0)    /*每行输出10个数*/
         printf("\n ");
      printf("%5d ",aa[i]);
    }
}

  1. 判定一个数是不是素数, 你可以写一个函数。
  2. 你可以看看别人的程序是怎么写的:
    https://so.csdn.net/so/search?spm=1005.2025.3001.4498&q=%E6%AF%94%E8%BF%99%E4%B8%AA%E6%95%B0%E5%AD%97%E5%B0%8F%E7%9A%84%E7%B4%A0%E6%95%B0&t=blog&u=

题主代码修改如下,供参考:

#include <stdio.h>
int main()
{
    int num,i,j;
    scanf("%d", &num);
    if (num > 0)
    {
        for (i = 2; i < num; i++)  //for (i = 2; i <= num; i++) 修改
        {
            for (j = 2; j < i; j++) //for (j = 2; j <= i; j++) 修改
            {
                if (i % j == 0) break; //修改
            }
            if (j == i)
                printf("%d ", i);
        }
    }
    else
        printf("error\n");
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632