c语言求分解质因数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言求分解质因数相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()

int aaa[3][100000];
int m,n,i,j,x=0,y=0,z=0,jj;
printf("输入m,n,必须是整数!");
scanf("%d%d",&m,&n);
for(i=2;i<=m;i++)

if(n%i==0)

a[1][x]=i;
x=x+1;




for(j=2;j<=n;j++)

if(n%i==0)

a[2][y]=i;
y=y+1;



for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

if(a[1][0]==a[2][0])

a[3][z]=a[1][j];
z=z+1;



for(z=0;z<=(m+n);z++)

jj=a[3][z]*1;

printf("%d",jj);


出现错误error C2106: '=' : left operand must be l-value
error C2109: subscript requires array or pointer type

有这样几个问题:

    声明的二维数组是aaa,但代码中应用时又变成了a,会产生a未定义错误。

    int aaa[3][100000];数组太大,建议使用全局变量或动态数组;改成int a[3][1000];更好。

    a[3][z]=a[1][j];这里和jj=a[3][z]*1;这里数组a都越界了。声明的a第一维是3,即0、1、2,不可能有[3]。

    把这些错误改了再说。

追问

哇!!秒懂!

我再看看!

还是不太对!是不是小于等于那里问题

追答

一细看还有错误啊——
void main(void)
int a[3][1000];//00
int m,n,i,j,x=0,y=0,z=0,jj;
printf("输入m,n,必须是整数!");
scanf("%d%d",&m,&n);
for(i=2;i<=m;i++)

if(n%i==0)//这里好像应该是m%i吧?

a[1][x]=i;
x=x+1;


for(j=2;j<=n;j++)

if(n%i==0)//这里好像应该是n%j吧?

a[2][y]=i;//应该是=j吧?
y=y+1;


for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

if(a[1][0]==a[2][0])//这里是只和[0]比较吗?

a[3][z]=a[1][j];//这里的a[3][z]里的[3]改成什么了?
z=z+1;



for(z=0;z<=(m+n);z++)//这里循环了,但下面却只取了最后结果,没理解啊!

jj=a[3][z]*1;//这里的a[3][z]里的[3]改成什么了?

printf("%d",jj);

参考技术A 你数组定义的名为aaa,但其它地方又是a追问

改了之后显示页面

一按出去了

c语言分解质因数问题 已知正整数n是两个不同的质数的乘积,求较大的质数

参考技术A 亲,你看你程序里面的一条语句 printf("%d",&h); 你输出的是h的地址呀,你只要改为 printf("%d",h);亲,不知道你明白没,

以上是关于c语言求分解质因数的主要内容,如果未能解决你的问题,请参考以下文章

c语言质因数分解题目怎么做

C语言分解质因数

c语言,用分解质因数的方法求两个数的最大公约数

c语言分解质因数问题 已知正整数n是两个不同的质数的乘积,求较大的质数

c语言分解质因数

c语言将一个正整数分解质因数,望高手帮我详细解释一下程序?