设整数集合 M 定义如下:(1) 1∈M ;(2) 若 x ∈M , 则 2x+1 ∈M , 3x+1 ∈M ;(3) 没有别的整数属于集合 M 。编程序按递增顺序生成并输出集合 M 的前n项输入:一个正整数n(≤300)。输出:按递增序列输出n个属于集合M的整数,各数间以一个西文空格间隔;最后一个数后无字符。样例1:输入:10输出:1 3 4 7 9 10 13 15 19 21样例2:输入:1输出:1#include<stdio.h>#include<stdbool.h>void paixu(int a[10000],int n);int main(){int a[10000],i,j,r,n;scanf("%d",&n);a[0]=1;r=0;for(i=1;i<10000;i=i+2){a[i]=2*a[r]+1; a[i+1]=3*a[r]+1; r++;}//算出所有的数int k,p;k=1;for(i=1;i<10000;i++){ p=1; for(j=0;j<=i-1;j++){ if(a[j]==a[i]) {p=0; break; }} if(p==1){ a[k]=a[i]; k++; }}//去掉重复的数paixu(a,n);//排序并输出return 0;}void paixu(int a[10000],int n){bool flag;int i,x;flag=true;while(flag){flag=false;for(i=0;i<9999;i++){ if(a[i]>a[i+1]){ x=a[i]; a[i]=a[i+1]; a[i+1]=x; flag=true;}}} for (i = 0; i < n; i++) { printf("%d", a[i]); if(i < n-1)printf(" ");}}为什么在学习通上不能通过?教教孩子吧!