4 条题解

  • 3
    @ 2023-3-5 13:29:03
    C++

    Florance

    #include <bits/stdc++.h>
    using namespace std;
    bool isp(int a){//判断素数
        if (a == 1) return false;//1不是素数#2的坑点
        for(int i = 2; i * i <= a; i++) {
            if(a % i == 0) return false;
        }
        return true;
    }
    int main(){
        int n;
        int x;
        int sum1 = 0, sum2 = 0;
        int p[100], np[100];//素数存入p数字,非素数存入np数组
        cin >> n;
        for(int i = 0; i < n; i++) {
            cin >> x;
            if(isp(x)) {//分数
                p[sum1] = x;
                sum1 += 1;
            }
            else {
                np[sum2] = x;
                sum2 += 1;
            }
        }
        sort(p, p + sum1);//素数排序
        for(int i = 0; i < sum1; i++) {
            cout << p[i] << " ";
        }
        for(int i = 0; i < sum2; i++) {
            cout << np[i] << " ";
        }
        return 0;
    }
    
    • 3
      @ 2023-2-11 12:16:47
      • 1不是素数
      • 合数保持原来顺序
      #include <stdio.h>
      #include <math.h>
      #define N 1010
      
      typedef struct {
      	int num, data;
      } node;
      
      int n;
      node a[N];
      
      int isPrime(int x) {
      	if(x == 1) return 0; 
      	for(int i = 2; i < sqrt(x) + 0.05; i++) {
      		if(x % i == 0) return 0;
      	}
      	return 1;
      }
      
      void swap(node *x, node *y) {
      	node temp = *x;
      	*x = *y;
      	*y = temp;
      }
      
      void SelectSort(node *x, int l, int r) {
      	for(int i = l; i < r; i++) {
      		int m = i;
      		for(int j = i + 1; j <= r; j++) {
      			if(isPrime(x[m].data)) {
      				if(isPrime(x[j].data) && x[j].data < x[m].data) m = j;
      			}
      			else {
      				if(isPrime(x[j].data)) m = j;
      				else if(x[j].num < x[m].num) m = j;
      			}
      		}
      		swap(&x[i], &x[m]);
      	}
      }
      
      int main()
      {
      	scanf("%d", &n);
      	for(int i = 1; i <= n; i++) {
      		scanf("%d", &a[i].data);
      		a[i].num = i;
      	}
      	SelectSort(a, 1, n);
      	for(int i = 1; i <= n; i++) {
      		printf("%d ", a[i].data);
      	}
      	return 0;
      }
      
      • 2
        @ 2024-12-7 7:50:29
        n=int(input())
        a=list(map(int,input().split()))
        def judge(x):
            if x==1 or x==0:
                return False
            else:
                flag=True
                for i in range(2,x):
                    if x%i==0:
                        flag=False
            return flag
        for i in range(1,n):
            for j in range(n-1,i-1,-1):
                if judge(a[j])==judge(a[j-1])==True and a[j]<a[j-1]:
                    a[j],a[j-1]=a[j-1],a[j]
                elif judge(a[j]) and not judge(a[j-1]):
                    a[j],a[j-1]=a[j-1],a[j]
        for i in range(n):
            print(a[i],end=" ")
        
      • 2
        @ 2023-2-16 11:38:41
        def judge(n):
            flag=True
            if n==1:
                flag=False
            for i in range(2,n):
                if n%i==0:
                    flag=False
                    break
            return flag
        n=int(input())
        a=list(map(int,input().split()))
        
        #使用冒泡排序算法对素数进行升序排序
        for i in range(n):
            for j in range(n-1,i,-1):
                if judge(a[j]):
                    if judge(a[j-1]) and a[j]<a[j-1] or not judge(a[j-1]):
                         a[j],a[j-1]=a[j-1],a[j]
        
        for i in range(n):
            print(a[i],end=" ")
        
        • 1

        信息

        ID
        809
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        递交数
        1022
        已通过
        266
        上传者