lydhhhhhh
2021-07-10 14:01
采纳率: 50%
浏览 12

要求输出素数和素数个数,请问这个代码哪里出错了,为什么只能输出0

#include <stdio.h>
#include <math.h>
#define N 5

int prime(int a[],int b[],int n);
int main()
{
int i,j;
int count;
int a[N];
int b[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);

count=prime(a,b,N);

for(j=0;j<count;j++)
    printf("%d ",b[j]);

printf("%d",count);

}

int prime(int a[],int b[],int n)
{
int i,j,k=0;
for(i=0;i<N;i++)
{
for(j=2;j<=sqrt((double)a[i]);j++)
{
if(a[i]%j==0)
return 0;
}
b[k]=a[i];
k++;

}


return k;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qzjhjxj 2021-07-10 15:19
    已采纳

    修改如下,供参考:

    #include <stdio.h>
    #include <math.h>
    #define N 5
    
    int prime(int a[],int b[],int n);
    int main()
    {
        int i,j;
        int count;
        int a[N];
        int b[N];
        for(i=0;i<N;i++)
                scanf("%d",&a[i]);
        count=prime(a,b,N);
        for(j=0;j<count;j++)
                printf("%d ",b[j]);
        printf("\n%d\n",count);
       
        return 0;
    }
    
    int prime(int a[],int b[],int n)
    {
        int i,j,k=0,flg=0;
        for(i=0;i<n;i++)//for(i=0;i<N;i++)
        {
           flg=0;
           for(j=2;j<=sqrt((double)a[i]);j++)
           {
               if(a[i]%j==0)
               {
                   flg=1; break;    //return 0;
               }
           }
           if(flg==0 && a[i]!=1){
               b[k]=a[i];
               k++;
           }
        }
        return k;
    }
    
    点赞 打赏 评论
  • qzjhjxj 2021-07-10 16:17

    img

    点赞 打赏 评论

相关推荐 更多相似问题