有1,2,3,4,5,6,7,8共八个数字,能组成多少个互不相同且无重复数字的6位质数?统计(显示)所有符合条件的质数的总和、均方根值,并显示按从大到小顺序排序之后的中位数?
2条回答 默认 最新
- 技术专家团-小桥流水 2021-11-12 09:06关注
代码如下:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1