1,2,6,4,8,9,10,2,3,4,2,3,4,5,4,6,7,8,6,9,1,6,7,8,7,6,9,10,8,6, 7,6,8,9,5,4,3,9,8,7
4. 请编写函数int twinborn(int a[][2],int m,int n),其功能是找出[m,n]中的所有孪生质数对(相差为2的两个质数称为孪生质数),并依次将每对孪生质数写到a指向的二维数组的每一行中。编写main函数,声明一个100×2的二维数组a,并从键盘上输入m和n的值,用a、m、n作为实在参数调用函数twinborn,将结果数组以行为单位输出至屏幕。例如,测试数据和运行结果如下:
input two numbers:10 100 11, 13 17, 19 29, 31 41, 43 59, 61 71, 73
5. 编程要求:(1)请编写函数int fun(int a[][3]),其功能是:找出符合下列命题的所有3位数:“若一个三位数是37的倍数,则将这个三位数的三个数字循环移位得到另两个三位数也是37的倍数”。例如,148是37的倍数,481和814也都是37的倍数。将满足条件的三位数及其循环移位后得到的另2个三位数依次写到形参a指向的二维数组中,函数返回三位数的组数(注意:尽量做到已经输出过的数,下次就不再输出。例如:148,481,841三个数算作一组)。(2)编写main函数,声明一个300×3的二维数组a,用a作为实在参数调用函数fun,输出所有满足上述条件的三位数。输出时,每组数据占一行。 /*1#include \int prime(int i) {int k;
for(k=2;k
}
int twinborn(int a[][2],int m,int n) { int k=0,i;
for(i=m;i<=n-2;i+=2) if(prime(i)&&prime(i+2)) a[k][0]=i,a[k][1]=i+2,k++;
return k; }
main()
{ int a[100][2],m,n,i; printf(\scanf(\if(!(m%2)) m+=1; if(m==1)
m+=2;
m=twinborn(a,m,n); for(i=0;i printf(\getch(); }*/ /*2 #include \#include \void fun(char x[]) {int i,j; for(i=0;x[i];) if(x[i]>='1'&&x[i]<='9') {for(j=i;x[j]!=0;j++);j=j-1; {while(j>=i) {x[j+1]=x[j];j--;} x[i]='$';i=i+2; } } else i++; } main() { char c[20]=\puts(c); fun(c); printf(\getch(); } */ /*3 #include \ void cont (int a[],int n, int b[]) { int i; for(i=0;i<40;i++) b[a[i]]++; } main() { int a[40]={1,2,6,4,8,9,10,2,3,4,2,3,4,5,4,6,7,8,6,9,1,6,7,8,7,6,9,10,8,6, 7,6,8,9,5,4,3,9,8,7},b[11]={0},i,n=40; cont(a,n,b); for(i=1;i<=10;i++) printf(\getch(); } */ /*5 (1) #include int n,y,k,m,q,b,c,i=0,x; for(n=100;n<1000;n++) { if(n7==0) { k=n/100; m=n/10; q=n; if(k*m*q!=0&&((k==m)+(m==q)+(q==k)<3)) { b=100*m+10*q+k; c=100*q+10*k+m; if(b7==0&&c7==0) { a[i][0]=n; a[i][1]=b; a[i][2]=c; i++; } } } } return i; } main() { int a[300][3],i,n; n=fun(a); for(i=0;i printf(\getch(); }*/ /*(2)*/ #include int fun1(int n,int m,int a[][3]) { int i; for(i=0;i if(n==a[i][0]||n==a[i][1]||n==a[i][2]) return 0; return 1; } int fun(int a[][3]) { int n,y,k,m,q,b,c,i=0,x; for(n=100;n<1000;n++) { if(n7==0) { k=n/100; m=n/10; q=n; if(k*m*q!=0&&(k==m)+(m==q)+(q==k)<3&&fun1(n,i,a)) /*第1个条件去掉2位数,第2个条件去掉重复数字,第3个条件去掉前面出 现过的3位数*/ { b=100*m+10*q+k; c=100*q+10*k+m; if(b7==0&&c7==0) { a[i][0]=n; a[i][1]=b; a[i][2]=c; i++; } } } } return i; } main() { int a[300][3],i,n; n=fun(a); for(i=0;i printf(\getch(); } 4.任何各位数字不全相同的3位正整数经以下变换后均能变为495,称495为3位整数的黑洞数。变换步骤:对于任意一个各位数字不全相同的3位正整数,将组成该正整数的3个数字重新组合分别生成一个最大数和最小数,用最大数减去最小数得到一个新的3位数(不足3位时前面补0);再对新的3位数重复上述操作,最多重复7次。 编写程序,接收从键盘输入的一个3位正整数,判断各位数字是否不全相同,若不全相同,则实施上述变换,输出每步变换后得到的3位整数。 5.求1~100以内的“完备数”。一个数如果恰好等于除它本身之外的各个因子之和,则称该数为“完备数”。例如:6是完备数。因为6的因子为1,2,3,且6=1+2+3。