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

#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个回答

#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;
}
#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;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐