mathe 发表于 2010-4-1 11:45:09

主要你这里LCM里面是
while(a!=b){if(a<b) a+=m;else b+=n;}
其中m,n不变,也就是说如果m=n-1,复杂度是O(m+n)
而通常的方法复杂度是O(log(m+n))

qianyb 发表于 2010-4-1 12:02:19

现在的CPU在加减乘除在机器长度范围内都相差无几了

gxqcn 发表于 2010-4-1 12:04:37

除法还是远慢于乘法的,
当然若是除一个常数,则会有些特殊方法转化为移位、乘法指令来加速。

wayne 发表于 2010-4-1 12:41:28

应该是编译器对%llu的解释出了问题。
不定个数参数的函数都有这类问题,编译器也没办法进行类型检查。
风云剑 发表于 2010-4-1 11:14 http://bbs.emath.ac.cn/images/common/back.gif
呵呵,有道理啊~~
我换成了%I64u ,%I32u 就正常了。。。

mathe 发表于 2010-4-1 12:42:49

gcc里面可以使用%I64u?我还以为这个是windows独创的。倒是%llu这个格式gcc应该支持的

wayne 发表于 2010-4-1 12:51:57

本帖最后由 wayne 于 2010-4-1 13:15 编辑

为了能平台无关,可以加一个头文件:

ISO C99 includes the inttypes.h
header file that includes a number of macros for use in platform-independent printf coding. Example macros include:
CharactersDescription"PRId32"Typically equivalent to I32d (Win32/Win64) or d"PRId64"Typically equivalent to I64d (Win32/Win64),
lld (32-bit platforms) or ld (64-bit platforms)"PRIi32"Typically equivalent to I32i (Win32/Win64) or i"PRIi64"Typically equivalent to I64i (Win32/Win64), lli (32-bit platforms) or li
(64-bit platforms)"PRIu32"Typically equivalent to I32u (Win32/Win64) or u"PRIu64"Typically equivalent to I64u (Win32/Win64), llu (32-bit platforms) or
lu (64-bit platforms)


长整型打印,平台无关的代码可以这么写:#include<stdio.h>
#include<limits.h>
#include<inttypes.h>
int main(){
printf("%"PRIu64"\n%"PRIu32"\n",ULLONG_MAX,ULONG_MAX);
}

wayne 发表于 2010-4-1 13:05:11

gcc里面可以使用%I64u?我还以为这个是windows独创的。倒是%llu这个格式gcc应该支持的
mathe 发表于 2010-4-1 12:42 http://bbs.emath.ac.cn/images/common/back.gif
MinGW下 能用,Linux下的gcc不能用(linux下用 mingw32除外,:lol )

wayne 发表于 2010-4-1 13:27:19

vs2008里面竟然没有C99里面的头文件 inttypes.h !!

wayne 发表于 2010-4-1 15:39:26

主要你这里LCM里面是
while(a!=b){if(a
mathe 发表于 2010-4-1 11:45 http://bbs.emath.ac.cn/images/common/back.gif
mathe真坏,
拿最坏的情况来讨论算法。。。

只是呼吸 发表于 2010-4-3 21:42:51

本帖最后由 只是呼吸 于 2010-4-3 22:09 编辑

楼主的那个程序在我用的vc++6.0上要将第3、4行的“longlong ”去掉一个long才能通过。通过后可以得到程序所提供的正确结论,没有楼主说的那种情况。

另外我用的这个vc++6.0用int定义c语言的整型数与用long定义c语言的整型数结果是一样的,都是2^31。若用“long long”来定义整数,都要报错,但看书上是可以这样定义的,一直郁闷ing。我是初学(自学),没有老师可问,若那个大大知道,告诉一声,先谢过哈。
页: 1 [2] 3
查看完整版本: 关于printf的问题