用C++代码做输入数字n表示输入个数,讲输入的n个数字中找到里面的所有素数(包括重复的素数),并从小到大输出出来。

用C++代码做输入数字n表示输入个数,讲输入的n个数字中找到里面的所有素数(包括重复的素数),并从小到大输出出来。
例如:
输入
4
3 7 2 1
输出
2 3 7
我的思路:
先判断素数,在判断正确,在排序,在输出,但是自己实现不了

#include 
using namespace std;

bool IsPrime(int n)
{
    if(n <= 1){
        cout<"不是素数"<return false;
    }
    for (int i = 2; i < n; i++)
    {
        if ((n % i) == 0){
            cout<"不是素数"<return false;
        }
    }
    cout<"是素数"<return true;
}

int main() {
    int a = 2, b = 17, c = 18;
    IsPrime(a);
    IsPrime(b);
    IsPrime(c);
    return 0;
}

参考如下:

#include <iostream>
#include <cmath>
using namespace std;

int prime(int x)
{
    int i;
    int flag = 1;
    if (x == 1) flag = 0; 
    for (i = 2; i <= sqrt(x); i++)
    {
        if (x % i == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}

// 从前往后冒泡
void sort(int a[],int n)
{
    int i,j,t,noswap;
    for(i=0;i< n-1; i++)
    {
        noswap=1; // 是否交换表示 1:未交换【表示已排序好】 0:交换了
        for(j=0;j<n-1-i;j++)
            if(a[j+1]<a[j])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
                noswap=0;
            }
        if(noswap)  // 已经排序好,直接退出就行
            break;
    }
}

int main()
{
    int n, m = 0, i, temp;
    cin>>n;

    int a[n];
    for(i = 0; i < n; i++)
    {
        cin>>temp;
        if(prime(temp))
            a[m++] = temp;
    }

    sort(a, m);

    for (i = 0; i < m; i++)
    {
        printf("%d ", a[i]);
    }
}

你的代码本身没问题,但是没有按照题目要求排序,也没有读取输入的数字,并且输出了无关的信息。

先输入数组,然后排好序,再这个判断素数进行输出就好了