weixin_44764457
wei xin_44706101
2019-03-27 23:23
采纳率: 86.7%
浏览 429

关于找素数的问题 新人求教

#include
int main()
{
int a[10],i,j,n;
int b[10];
for(i=0; i<10; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<10; i++)
{

    for(j=2; j<a[i]; j++)
    {
       n=a[i]%j;
       if(n==0)
         b[j]=a[i];


    }
    printf("%d",b[j]);
}

}

这样好像只能输出不是素数的数
如何修改代码 使输出的为素数

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

2条回答 默认 最新

  • caozhy
    已采纳
    #include <stdio.h>
    int main()
    {
        int a[10],i,j,n;
        for(i=0; i<10; i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0; i<10; i++)
        {
            for(j=2; j<a[i]; j++)
            {
                n=a[i]%j;
                if(n==0)
                    break;
            }
            if (j == a[i])
                printf("%d ",a[i]);
        }
        return 0;
    }
    
    点赞 评论
  • sinat_37676560
    云裳容 2019-03-27 23:27
    #include <stdio.h>
    
    int main(){
        int a=0;  // 素数的个数
        int num=0;  // 输入的整数
    
        printf("输入一个整数:");
        scanf("%d",&num);
    
        for(int i=2;i<num;i++){
            if(num%i==0){
                a++;  // 素数个数加1
            }
        }
    
        if(a==0){
            printf("%d是素数。\n", num);
        }else{
            printf("%d不是素数。\n", num);
        }
    
        return 0;
    }
    

    或者

    #include <stdio.h>
    #include <math.h>
    void main(){
        int m;  // 输入的整数 
        int i;  // 循环次数
        int k;  // m 的平方根 
    
        printf("输入一个整数:");
        scanf("%d",&m);
    
        // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
        k=(int)sqrt( (double)m );
        for(i=2;i<=k;i++)
            if(m%i==0)
                break;
    
        // 如果完成所有循环,那么m为素数
        // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
        if(i>k)
            printf("%d是素数。\n",m);
        else
            printf("%d不是素数。\n",m);
    
        return 0;
    }
    
    点赞 评论

相关推荐