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);
改了之后显示页面
一按出去了
c语言分解质因数问题 已知正整数n是两个不同的质数的乘积,求较大的质数
参考技术A 亲,你看你程序里面的一条语句 printf("%d",&h); 你输出的是h的地址呀,你只要改为 printf("%d",h);亲,不知道你明白没,以上是关于c语言求分解质因数的主要内容,如果未能解决你的问题,请参考以下文章