| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 783 人关注过本帖
标题:告诉我算法就行了~~求算法
只看楼主 加入收藏
gsbe1987
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-4-14
结帖率:100%
收藏
 问题点数:0 回复次数:10 
告诉我算法就行了~~求算法

因子分解

输入n(1 <= n <= 1e9):
616

输出:
616 = 2^3 * 7 * 11
(注意输出空格)
输出必须按2^3这样的格式输出

搜索更多相关主题的帖子: 算法 
2007-04-19 22:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

i=2;
while(num)
{
while(num%i==0)//反复除.
{
num/=i;
a[i]++;
}
i++;
}


倚天照海花无数,流水高山心自知。
2007-04-19 22:31
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 

int a[10]={0},b[10]={0}
i=2;,k=0
while(n!=1)
{
if(n%i==0)
{b[k]=i;
n/=i
c[k]++;
while(n%i)
{
c[i]++;
n/=i
}
k++
}
else
{ i++}
}
比较乱不知道你看不看的懂


2007-04-19 22:32
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
看出来了
斑竹又比我少用个数组

2007-04-19 22:33
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
其实我这样做也浪费了不少空间,但效率会增加.因为不用查找.
比如a[4]之类的.

倚天照海花无数,流水高山心自知。
2007-04-19 22:39
gsbe1987
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-4-14
收藏
得分:0 
我想知道算法,就是怎么样输出2^3这样的格式

便宜又好看的U盘,款式多多~~店铺地址:http://shop34991947.
2007-04-19 22:55
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
i^a[i].

倚天照海花无数,流水高山心自知。
2007-04-19 23:10
gsbe1987
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-4-14
收藏
得分:0 
i^a[i].里面的a[i]不是没有数值的?

便宜又好看的U盘,款式多多~~店铺地址:http://shop34991947.
2007-04-20 08:23
hujian100
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-9-14
收藏
得分:0 

我编写了一个 虽然有点繁琐,但思路还算清晰。请指教指教

#include <stdio.h>
#include <math.h>

void main()
{
long int input,input1;
int m=0, k, l, i;
printf("Please input a number (1 ~ 10^9):");
scanf("%d", &input);
input1=input;
if(input%2!=0)
{
if(input==1)
{
m=0;
k=1;
l=1;
}
else
{
m=0;
for(i=3;i<=input;i++)
{
if(input%i==0)
{
k=i;
l=input/i;
break;
}
}
}
}
else
{
while(input%2==0)
{
input/=2;
m++;
}
if(input==1)
{
k=1;
l=1;
}
else
{
for(i=3;i<=input;i++)
{
if(input%i==0)
{
k=i;
l=input/i;
break;
}
}
}
}
printf("The output is:\n");
printf("%d = 2^%d * %d * %d\n", input1, m, k, l);
}


2007-04-20 10:26
gsbe1987
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-4-14
收藏
得分:0 

这道题我已经会了,九楼的朋友的程序输出的时候怎么2^%d,输入的数不一定是2的?次方,像999,2是没法给他整除的,哪来的2^%d,是不是?


便宜又好看的U盘,款式多多~~店铺地址:http://shop34991947.
2007-04-20 10:42
快速回复:告诉我算法就行了~~求算法
数据加载中...
 
   



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

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