C语言求质数的个数和总和,均方

有1,2,3,4,5,6,7,8共八个数字,能组成多少个互不相同且无重复数字的6位质数?统计(显示)所有符合条件的质数的总和、均方根值,并显示按从大到小顺序排序之后的中位数?

代码如下:

#include <stdio.h>
#include <math.h>
//判断数中是否有重复数字,且不含0和9
int isReapeat(int n)
{
    int a[10],i=0,j,t;
    while(n)
    {
        t=n%10;
        if(t==0 || t==9) return 1; //不能包含0和9
        for(j=0;j<i;j++)
        {
            if(a[j] == t) return 1;
        }
        a[i++]=t;
        n/=10;
    }
    return 0;
}
//判断是否是质数
int prime(int n)
{
    int i = 2;
    for (i=2;i<n;i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}


int main()
{
    int a[10000],nmb=0,i;
    unsigned long long sum =0,st=0;
    double jfg,zws;
    for (i=876543;i>=123456;i--)
    {
        if (prime(i) && (!isReapeat(i)) )
        {
            a[nmb] = i;
            //printf("%d ",a[nmb]);
            st += a[nmb]*a[nmb];
            sum += a[nmb];
            nmb++;
            //if(nmb%10==0)
            //    printf("\n");
        }
    }
    //printf("\n");
    //均方根
    jfg = sqrt(st/(1.0*nmb));
    //中位数
    if(nmb%2==0)
        zws = (a[nmb/2]+a[nmb/2-1])/2.0;
    else
        zws = a[(nmb-1)];

    printf("质数个数:%d\n",nmb);
    printf("总和:%lld\n",sum);
    printf("均方根:%lf\n",jfg);
    printf("中位数:%g\n",zws);
    return 0;
}




用算法库 next_permutation对数字进行全排列。
将数字int数组 组合成6位数字int类型
对其使用判断是否为质数的方法
求总和 求方差。
用sort函数进行排序。