鱼C论坛

 找回密码
 立即注册
查看: 2964|回复: 13

C语言写的求最小公约数,最后输出总是0,求指出代码错误

[复制链接]
发表于 2012-4-29 20:28:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我是新手额,求指教。
  1. #include<stdio.h>
  2. #include<math.h>

  3. double main()
  4.         {
  5.            double pd(double x,double y);
  6.            double a,b,c;
  7.            scanf("%d,%d",&a,&b);
  8.            c=pd(a,b);
  9.        printf("The greatest common divisor is %d\n",c);
  10.         }

  11. double pd(double x,double y)
  12.         {
  13.            double z,i,r,m;
  14.            z=2;
  15.            m=2;
  16.        while(z<=x)
  17.                    {
  18.                    i=fmod(x,z);
  19.                r=fmod(y,z);
  20.                    if(i=0,r=0)
  21.                            {
  22.                         z=z+1;
  23.                         m=m+1;
  24.                            }
  25.                    else
  26.                            z=x;
  27.                    }
  28.            return(m);
  29.         }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-29 20:53:08 | 显示全部楼层
额,说错了,是求最大公约数
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 21:08:24 | 显示全部楼层
不是吧 最大公约数??没你这么复杂
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-29 21:13:28 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 22:03:25 | 显示全部楼层
ToSmile 发表于 2012-4-29 21:13
能帮写一个么。我是新手额。

哦 我发一个
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 22:04:25 | 显示全部楼层
ToSmile 发表于 2012-4-29 21:13
能帮写一个么。我是新手额。

你这个 我都看不懂了 求公约数 有好多种方法啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 22:11:43 | 显示全部楼层
#include"stdio.h"
void main()
{
int m,n,t,l,m1,n1;
scanf("%d%d",&m1,&n1);
if(n1>m1){t=m1;m1=n1;n1=t;}
m=m1;n=n1;
do
{l=m%n;
m=n;
n=l;
} while(n!=0);
printf("最大公约数为%d\t",m);
printf("最小公倍数为%d\t",m1*n1/m);
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 22:12:17 | 显示全部楼层
不过 最小公约 数 没写过 哈哈 你可以百度一下
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 22:59:27 | 显示全部楼层
最小公约数不用求吧,就是1吧。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-30 09:19:22 | 显示全部楼层
最小公约数就是1。。最大公约数可用辗转想除法。例如两数m,n。。 r=m mod n
弄个循环判断r是否等于0。。不等于就m=n..n=r.. r=m mod n。。直到r=0。。然后输出n 就是最大公约数。抱歉没搞过C语言。。只能提供方法了- -
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-30 09:28:28 | 显示全部楼层
Potato丶 发表于 2012-4-30 09:19
最小公约数就是1。。最大公约数可用辗转想除法。例如两数m,n。。 r=m mod n
弄个循环判断r是否等于0。。不 ...

谢啦,哈哈
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-30 19:59:22 | 显示全部楼层
  1. #include "stdio.h"
  2. int main()
  3. {
  4.         int a,b,gysh,temp;
  5.         scanf("%d%d",&a,&b);
  6.         while(b!=0){
  7.                 temp=a%b;
  8.                 a=b;
  9.                 b=temp;
  10.         }
  11.         gysh=a;
  12.         printf("最大公约数为:%d\n",gysh);
  13.         return 0;
  14. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-30 20:06:25 | 显示全部楼层
//求最大公约数
#include <stdio.h>
int main()
{
        int a,b,r,j;
    printf("input two\n");
    scanf("%d %d",&a,&b);
    while (r!=0)
    {
                if (a>b)
        {
                        r=a%b;
            a=b;
            b=r;
            j=a;
        }
         
        else
        {
                        r=b%a;
            b=a;
            a=r;
            j=b;
        }
    }
    printf("%d\n",j);
    printf("\n");
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-16 23:46:57 | 显示全部楼层
密码学里面有个欧几里德算法~可以看看 ~
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 02:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表