| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 804 人关注过本帖
标题:[求助]无从下手啊
只看楼主 加入收藏
lipng123
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
 问题点数:0 回复次数:10 
[求助]无从下手啊
将一个正整数分解质因数。例如:输入90,打印出 90=2*3*3*5*5.

这个怎算啊。。

老是算不出来。。
搜索更多相关主题的帖子: 无从下手 
2007-08-12 15:01
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 
你写错了吧?90=2*3*3*5*5.

是不是多了一个5?

[此贴子已经被作者于2007-8-12 15:05:31编辑过]


论坛是我家灌水靠大家
2007-08-12 15:04
lipng123
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
恩。。是多了个5.。不好意思啊。

是 打印出 90=2*3*3*5*.

这个。。

就是算不出来。。

谁帮帮我啊


2007-08-12 15:07
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 

前几天编的!!只是:90=2*3^2*5(3的2次方)

#include <stdio.h>
#include <math.h>
void primnum(long num)
{
long i,index=2,ncount=0,sqr=(long)sqrt(double(num));

for(i=index;i<=sqr;++i)
{
while(num%i==0)
{
num/=i;
++ncount;
index=i;
sqr=(long)sqrt(double(num));
}
if(ncount==1)
{
printf("%ld*",i);
ncount=0;
}
if(ncount>1)
{
if(num==1)
{
printf("%ld^%ld",i,ncount);
goto end;
}
else
{
printf("%ld^%ld*",i,ncount);
ncount=0;
}
}
}
if(ncount==0||index>sqr)
{
printf("%ld\n",num);
}
end: return;

}

int main()
{
long num;
while(scanf("%ld",&num)!=EOF)
{
printf("%ld = ",num);
if(num<2)return 1;
else primnum(num);
}
return 0;

}


要练习算法就来http:///!!有挑战哦!!
2007-08-12 15:09
lipng123
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
恩..

不过怎么有些东西能 计算出..
有些不能啊...

比如我输入

80=2*4*5...计算不对啊...

怎么搞的..
是不是出错了啊

2007-08-12 15:15
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
是2^4*5,我的程序算平方,而且都是素数因子!!

要练习算法就来http:///!!有挑战哦!!
2007-08-12 15:18
lipng123
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
哦,恩.知道了..
那能不能不算平方啊..
直接把结果 全 写出来了?


2007-08-12 15:20
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
能阿。那样简单多了!!

要练习算法就来http:///!!有挑战哦!!
2007-08-12 15:26
lipng123
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
还简单多了啊..?
我怎么想半天也没想出来啊..
我才刚学到循环这里...只能循环出简单的东西..
麻烦你指点一下

2007-08-12 15:28
戒不掉
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-11
收藏
得分:0 

#include <stdio.h>
#include <math.h>
#define LEN 100000
int Primes[LEN]={0};
void Eratosthenes(int n){
int i;
int j,k=0;
int a[LEN];
for(i=1;i<=n;i++)
a[i]=i;
for(i=2;i<sqrt(n);i++)
for(j=i+1;j<=n;j++) {
if (a[i]!=0&&a[j]!=0)
if (a[j]%a[i]==0)
a[j]=0;
else
continue;
}
for(i=2;i<=n;i++){
if (a[i]!=0){
Primes[k]=a[i];
k++;
}
else
continue;

}

return ;
}
void Remov(int n){
int i;
for(i=0;Primes[i]!=0;){
if(n%Primes[i]==0){
printf("%d*",Primes[i]);
n/=Primes[i];
continue;
}
else
i++;
}
return ;

}

int main(void){
int n;
scanf("%d",&n);
Eratosthenes(n);
Remov(n);

return 0;
}


2007-08-12 16:18
快速回复:[求助]无从下手啊
数据加载中...
 
   



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

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