| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:yushui come in!
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
 问题点数:0 回复次数:6 
yushui come in!
//
// File: test.cc
// Author: vlinux
// 题目:输入一个数 把它分成两个数 看着两个数的最大公约数和最小公倍数之比为1:7 求着两个数
// Created on 2007年3月12日, 下午9:19
//

#include <stdlib.h>
#include <iostream.h>

//
//
//

//求最大公约数
inline int getGCD( int x, int y ) {
int i, j, t;
if (x == 0 ) return y;
if (y == 0 ) return x;
for (i = 0 ; 0 == (x & 1 );x >>= 1 , ++ i);
for (j = 0 ; 0 == (y & 1 );y >>= 1 , ++ j);
if (j < i) i = j;
for (;;) {
if (x < y) t = y, y = x, x = t;
if ( 0 == (x -= y)) return y << i;
for (; 0 == (x & 1 );x >>= 1 );
}
}


//求最小公倍数
inline int getLCM( int x, int y, int gcd ) {
return x*y/gcd;
}




int main(int argc, char** argv) {

int num;
//cout << "Input a integer\n";
//cin >> num;
for( num = 1; num<=1000; num++ ) {
int i = 1;
do {
if( num%i == 0 ) { //如果i能够被num整除,说明 i * num/i = num
//即:num可以被拆分成 i与num/i相乘
int a = i;
int b = num/i;
int gcd = getGCD( a, b ); //取得最大公约数
int lcm = getLCM( a, b, gcd ); //取得最小公倍数
if( gcd*7==lcm ) {
cout << "num=" << num << " a=" << a << " b=" << b << " gcd=" << gcd << " lcm=" << lcm << endl;
}
}

} while( i++<=num/2+1 );
}
return 0;
}


搜索更多相关主题的帖子: come yushui int include 最大公约数 
2007-03-12 22:09
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
题目有点不明确,1个数怎么拆成2个数?C=A×B? or C=A+B?
没有细看你的程序

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-12 22:14
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
不错,能想到这样的问题~~
我现在是先弄乘法的

淘宝杜琨
2007-03-12 22:46
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 
8是不是 可以分 2个0....

哎 时间....................
2007-03-12 22:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
亦或是C=AB;

不过按道理应该是C=A+B这种.

倚天照海花无数,流水高山心自知。
2007-03-12 22:59
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 
int main(int argc, char** argv) {

int num;
//cout << "Input a integer\n";
//cin >> num;
for( num = 1; num<=1000; num++ ) {
int i = 1;
do {
if( num%i == 0 ) { //如果i能够被num整除,说明 i * num/i = num
//即:num可以被拆分成 i与num/i相乘 好象任何数模1都等于0吧..

int a = i;
int b = num/i;
int gcd = getGCD( a, b ); //取得最大公约数
int lcm = getLCM( a, b, gcd ); //取得最小公倍数
if( gcd*7==lcm ) {
cout << "num=" << num << " a=" << a << " b=" << b << " gcd=" << gcd << " lcm=" << lcm << endl;
}
}

} while( i++<=num/2+1 );
}
return 0;
}

哎 时间....................
2007-03-12 23:01
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
是的~~任何数模1都等于0

淘宝杜琨
2007-03-13 08:00
快速回复:yushui come in!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020458 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved