C或者C++,从键盘中输入10个正整数到一个一维数组,将数组中的素数按从小到大的顺序排列后输出

C或者C++,从键盘中输入10个正整数到一个一维数组,将数组中的素数按从小到大的顺序排列后输出

先提取素数,然后再排序

//从键盘中输入10个正整数到一个一维数组,将数组中的素数按从小到大的顺序排列后输出
#include <stdio.h>
int isprime(int n)
{
    int i;
    if(n<2)
      return 0;
    for(i=2;i*i<=n;i++)
      if(n%i==0)
        return 0;
    return 1;
}
int main()
{
    int a[10];
    int i,j=0,n=0,t;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<10;i++)
        if(isprime(a[i]))
           a[n++] = a[i];
    if(n==0)
        printf("Not Found");
    else
    {
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
            if(a[j] > a[j+1])
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    }
    return 0;
}

运行结果及代码如下:

img

代码:


#include <stdio.h>
int prime(int n)
{
    int i;
    if(n<2) return 0;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}

int main()
{
    int a[10];
    int b[10],index[10],i,j,n,t;
    printf("请输入10个数:");
    n=0;
    for (i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
        if(prime(a[i]))
        {
            b[n]=a[i];
            index[n] = i;  //记录所在位置的下标
            n++;
        }
    }
    //将所有素数排序
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-i-1;j++)
        {
            if (b[j]>b[j+1])
            {
                t = b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            
            }
        }
    }

    //更新位置
    for (i=0;i<n;i++)
    {
        t = index[i];
        a[t] = b[i];
    }
    //输出排序后的数组
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}