求c代码:输入一个n,输出一个二维数组。。。
求c代码:输入一个n,输出一个二维数组输入一个偶数n,6<n<19680;
输出二维数组a
比如n=42
则输出
8 3 0 0 0 0 0 0 0
3 3 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
其中
a=8 (因为42等于8组 素数+素数 :42=5+37 42=11+31 42=13+29 42=19+23
42=23+1942=29+11 42=31+11 42=37+5)
a=3 (因为42等于3组 素数+质因数数量为2的数 :42=3+3942=7+3542=17+25)
a=3 (因为42等于3组 质因数数量为2的数+素数 :42=39+342=35+742=25+17)
a=3 (因为42等于3组 质因数数量为2的数+质因数数量为2的数 :42=9+33 42=21+2142=33+9)
a=1 (因为42等于1组 素数+质因数数量为3的数 :42=15+27)
a=1 (因为42等于1组 质因数数量为3的数+素数 :42=27+15)
其他为0
就是把n分拆成为2个奇数,其中n=1+(n-1)和n=(n-1)+1这两个情况不考虑。
把分成的这两个奇数,分别求质因数数量
如3,5,7 ,11这些素数,就是质因数数量为1的数
如65=5*13,49=7*7 ,93=3*31 这些就是质因数数量为2的数
余此类推。
n<19682是因为3^9=19683,如果大于此数,则需要a的数组了。 程序前面是#include <stdio.h>
int main()
{
int a = {0};
int i, j;
int n;
printf("请输入一个大于6的偶数:\n");
scanf("%ld", &n);
printf("%d[]=:\n",n); 后面是for (i=0; i <9; i++)
{
for (j=0; j <9; j++)
printf( "%2d ", a);
printf( "\n ");
}
} 附上求n的质因子数的函数pn(n)int pn(int n)
{
int i,t=1;
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
n/=i;t++;
}
else
break;
}
}
return (t);
}
2楼和3楼只是我编程时的一些代码,各位不一定按照这个来,用自己的方法,能得到正确答案就行。 背景背景,问题的背景很重要! 问题的背景:
a=是哥德巴赫分拆数
从将偶数分拆为2个奇数,看看这些奇数对的内部规律。
页:
[1]