c语言的一个程序编译无错,但运行结果总不对,实在找不到错,只能求助各位大神了。
#include<stdio.h>#include<math.h>intyinzi(inta[],intn){inti=2;intk=0;while(i<n){if(n%...
#include<stdio.h>
#include<math.h>
int yinzi(int a[ ],int n)
{ int i=2;
int k=0;
while(i<n){
if(n%i==0) {
a[k]=i;
k++;
n=n/i;
}
else i++;
}
a[k]=0;
}
int gcd_3(int a[ ],int b[ ]){
int i=0,j=0;
int gcd=1;
while(a[i]*b[j]!=0){
if(a[i]==b[j]){
i++;
j++;
gcd*=a[i];
}
else if(a[i]<b[j])
i++;
else j++;
}
return gcd;
}
int main(){
int m,n,c,i=0;
int a[10];int b[10];
printf("please input two numbers \n");
scanf("%d,%d",&m,&n);
yinzi(a,m);
yinzi(b,n);
c=gcd_3(a,b);
printf("the gcd_3 is %d",c);
system("pause");
}
不好意思,各位大神,昨晚上弄的太仓促啦。。问题补充如下:要求用分解质因数的方法求解最大公约数的问题,用c语言实现。。 还有那个n=n/i, 是更新n的值。我再把程序加注释写一遍吧:
int yinzi(int a[ ],int n) || 求数字n的公因数,将公因数存在一个整形数组里
{ int i=2;
int k=0;
while(i<n){
if(n%i==0) {
a[k]=i;
k++;
n=n/i; ||更新n的值
}
else i++;
}
a[k]=0;
}
int gcd_3(int a[ ],int b[ ]){ ||计算两个数的公共因子
int i=0,j=0;
int gcd=1;
while(a[i]*b[j]!=0){
if(a[i]==b[j]){
i++;
j++;
gcd*=a[i];
}
else if(a[i]<b[j])
i++;
else j++;
}
return gcd;
}
int main(){
int m,n,c,i=0;
int a[10];int b[10];
printf("please input two numbers \n");
scanf("%d,%d",&m,&n);
yinzi(a,m);
yinzi(b,n);
c=gcd_3(a,b);
printf("the gcd_3 is %d",c);
system("pause"); 展开
#include<math.h>
int yinzi(int a[ ],int n)
{ int i=2;
int k=0;
while(i<n){
if(n%i==0) {
a[k]=i;
k++;
n=n/i;
}
else i++;
}
a[k]=0;
}
int gcd_3(int a[ ],int b[ ]){
int i=0,j=0;
int gcd=1;
while(a[i]*b[j]!=0){
if(a[i]==b[j]){
i++;
j++;
gcd*=a[i];
}
else if(a[i]<b[j])
i++;
else j++;
}
return gcd;
}
int main(){
int m,n,c,i=0;
int a[10];int b[10];
printf("please input two numbers \n");
scanf("%d,%d",&m,&n);
yinzi(a,m);
yinzi(b,n);
c=gcd_3(a,b);
printf("the gcd_3 is %d",c);
system("pause");
}
不好意思,各位大神,昨晚上弄的太仓促啦。。问题补充如下:要求用分解质因数的方法求解最大公约数的问题,用c语言实现。。 还有那个n=n/i, 是更新n的值。我再把程序加注释写一遍吧:
int yinzi(int a[ ],int n) || 求数字n的公因数,将公因数存在一个整形数组里
{ int i=2;
int k=0;
while(i<n){
if(n%i==0) {
a[k]=i;
k++;
n=n/i; ||更新n的值
}
else i++;
}
a[k]=0;
}
int gcd_3(int a[ ],int b[ ]){ ||计算两个数的公共因子
int i=0,j=0;
int gcd=1;
while(a[i]*b[j]!=0){
if(a[i]==b[j]){
i++;
j++;
gcd*=a[i];
}
else if(a[i]<b[j])
i++;
else j++;
}
return gcd;
}
int main(){
int m,n,c,i=0;
int a[10];int b[10];
printf("please input two numbers \n");
scanf("%d,%d",&m,&n);
yinzi(a,m);
yinzi(b,n);
c=gcd_3(a,b);
printf("the gcd_3 is %d",c);
system("pause"); 展开
4个回答
展开全部
你还是将代码加上注释或你写这段代码的目的是什么说清楚吧,不然我也不知道你这怎么才算对。
追问
谢谢提醒哈,昨晚上时间仓促也就没想那么多,没想到给各位带来这么多麻烦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把大家当神仙吗,运行结果不对,你应该把你这段程序的目的是什么,预期结果是什么告诉我们啊,要不然我们也分不清哪个结果才是你想要的结果啊,
追问
我已经补充了问题,是用分解质因数的方法求最大公约数的问题,最开始是一个求数字n的公因数的函数,并将其公因数存放在一个整形数组中。接下来那个函数是把两个分别存放公因数的数组进行计算,找到其中的公共因数,及相等的因子。最后主函数中,是输入两个数分别调用上面的函数,最后输出最大公约数!麻烦各位了,呵呵。请各位大神看看吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询