hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 1033|回复: 9

关于printf的问题

[复制链接]

926

主题

1137

帖子

3586

积分

超级版主

Rank: 8Rank: 8

积分
3586

论坛头条论坛元老谋士数据帝优秀版主超级版主见习版主论坛版主

发表于 2024-2-18 21:55:00 | 显示全部楼层 |阅读模式
我的基础很差,为了缩短我在emath论坛的贫富差距,我最近一直在尝试实现大数运算需要解决的问题里面列举的几个问题

最开始,我是从大数乘法入手的,比较顺利,现在我开始实现最小公倍数,最大公约数,可遇到了很大的阻碍,调试了N长的时间,我都快要疯了 。

最后,砍掉了大量的代码,发现问题集中在最基本的printf上, ,
难道printf不能同时调用两个两个以上的函数吗
这是咋回事?
  1. #include<stdio.h>#include<stdlib.h>unsigned long long LCM(unsigned long m,unsigned long n){unsigned long long a=m,b=n;while(a!=b){if(a<b) a+=m;else b+=n;}return a;}unsigned long GCD(unsigned long m,unsigned long n){while(m!=n){if(m<n) n-=m;else m-=n;}return m;}int main(){unsigned long a,b,m,n;scanf("%lu%lu",&a,&b);printf("%llu\n%lu\n",LCM(a,b),GCD(a,b));printf("====%lu====",GCD(a,b));return 0;}
复制代码

本帖子中包含更多资源

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

x
世界上最遥远的距离,不是生与死的距离,而是我站在你面前,你却不知道我爱你
回复

使用道具 举报

0

主题

208

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-18 21:55:16 | 显示全部楼层
你遇上什么问题的?理论上应该没有问题。
不过你这个LCM的实现好像有点慢
回复

使用道具 举报

0

主题

189

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-18 21:55:49 | 显示全部楼层
第16行的printf里面的GCD 打印结果为0,很奇怪。。。
回复

使用道具 举报

0

主题

172

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-18 21:56:33 | 显示全部楼层
我的那个LCM没有用乘法,只用加法,我想速度应该不弱吧
另外,除了先求GCD,LCM还有没有什么其他的快速算法?
回复

使用道具 举报

0

主题

172

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-18 21:57:10 | 显示全部楼层
我在VC2008调试你的代码是正常的。
回复

使用道具 举报

0

主题

188

帖子

163

积分

关内侯

Rank: 2

积分
163
发表于 2024-2-18 21:57:33 | 显示全部楼层
哦,我用的是
gcc version 4.4.1 (TDM-2 mingw32)

打印结果异常。。
第一个GCD始终为0,第二个GCD正常
回复

使用道具 举报

562

主题

741

帖子

1933

积分

大司空

Rank: 5Rank: 5

积分
1933
发表于 2024-2-18 21:58:07 | 显示全部楼层
的确,VC没有问题。

看来是GCC的问题
回复

使用道具 举报

0

主题

180

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2024-2-18 21:58:48 | 显示全部楼层
你遇上什么问题的?理论上应该没有问题。
不过你这个LCM的实现好像有点慢
mathe 发表于 2010-4-1 10:20

通常的时候,与乘法相比较,加法所花的时间总是被我们忽略了,
像这里,该怎么进行算法效率的比较呢

本帖子中包含更多资源

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

x
回复

使用道具 举报

0

主题

188

帖子

171

积分

关内侯

Rank: 2

积分
171
发表于 2024-2-18 21:59:27 | 显示全部楼层
应该是编译器对%llu的解释出了问题。
不定个数参数的函数都有这类问题,编译器也没办法进行类型检查。
回复

使用道具 举报

0

主题

208

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-18 21:59:43 | 显示全部楼层
通常的时候,与乘法相比较,加法所花的时间总是被我们忽略了,
像这里,该怎么进行算法效率的比较呢
wayne 发表于 2010-4-1 11:01

那得看它们的比例关系,
现在乘法指令已经得到高度优化了,有时1个指令周期即可完成,
也许你多做一次if判断还不及多做一次乘法划算。

本帖子中包含更多资源

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

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-5-3 06:11 , Processed in 0.065728 second(s), 23 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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