Anonymous 发表于 2022-2-28 19:07:01

为什么这个我写的跟答案一样但是运行不出来啊(第五行到第21行是我写的,其他是原代码

本帖最后由 匿名 于 2022-2-28 19:09 编辑

题目是求出小于或等于lim的所有素数并放在aa数组中,并返回所求素数的个数
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa)
{
int i,j,k=0;
for(i=2;i<=lim;i++)
{
          for(j=2;j<i;j++)
          {
                  if(i%j==0)
                        break;
                  if(j==i)
                  {
                        aa=i;
                  }
          }
}
return k;
}
void main()
{
FILE *wf;
int limit,i,sum;
int aa;
system("CLS");
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);
    }
/******************************/
wf=fopen("out.dat","w");
sum=fun(15,aa);      
for(i=0;i<sum;i++)
   {
      if(i%10==0&&i!=0)    /*每行输出10个数*/
         fprintf(wf,"\n");
      fprintf(wf,"%5d ",aa);
    }
fclose(wf);
/*****************************/
}

大马强 发表于 2022-2-28 19:30:46

if(j==i)
aa=i;
这句是执行不了的,因为 j<i 是条件
改成
if (j==i-1)

h-b-z-d-j-s-m 发表于 2022-2-28 19:41:09

答案是j>=i;老师的视频是可以执行的,为什么啊

h-b-z-d-j-s-m 发表于 2022-2-28 19:45:54

h-b-z-d-j-s-m 发表于 2022-2-28 19:41
答案是j>=i;老师的视频是可以执行的,为什么啊

用j==i-1运行出来后素数没有2,从3开始的

大马强 发表于 2022-2-28 22:58:08

哪道题的答案?
for(j=2;j<i;j++)
j是不会等于i的

c_cpp_python 发表于 2022-2-28 23:03:27

这样?

for(i = 2; i <= lim; i++)
{
        for(j = 2; j <= i; j++)
        {
                if(j == i)
                        aa=i;
                if(i % j == 0)
                        break;
        }
}

大马强 发表于 2022-2-28 23:19:36

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa)
{
int i,j,k=0;
for(i=2;i<=lim;i++)
{
          for(j=2;j<=i;j++)
          {
                  if (i==2 || j==i)
                         aa=i;
            if(i%j==0)
                break;
          }
}
return k;
}
void main()
{
FILE *wf;
int limit,i,sum;
int aa;
system("CLS");
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);
    }
}

输入一个整数:100
    2   3   5   7    11    13    17    19    23    29
    31    37    41    43    47    53    59    61    67    71
    73    79    83    89    97
--------------------------------
Process exited after 3.103 seconds with return value 25
请按任意键继续. . .

h-b-z-d-j-s-m 发表于 2022-3-2 15:46:04

https://static01.imgkr.com/temp/15da2f05fb214e56a4ed49c6048b1c21.jpg

答案是这个为什么我运行不出来
页: [1]
查看完整版本: 为什么这个我写的跟答案一样但是运行不出来啊(第五行到第21行是我写的,其他是原代码