| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2239 人关注过本帖
标题:有关素数的问题?
只看楼主 加入收藏
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
 问题点数:0 回复次数:19 
有关素数的问题?
任何大于2的正整数都可以分解成几个素数的乘积,且这个分解是唯一的。
例:输入30,输出30=2*3*5
而且素数可以重复,比如:12=2*2*3
下面这个函数能够输出像30这样的分解因数是不同的素数的数,而不能输出有多个素数的乘积的数,比如12=2*2*3,8=2*2*2,不知我是否说明白了!请高手帮我看看!谢谢!


#include<stdio.h>
#include<math.h>
int isprime(int n);/*判断素数的函数*/
int fenjie(int n);/*将大于2的正整数分解的函数*/


void main()
{
int i,n;
scanf("%d",&n);fflush(stdin);
if(n<=1)  EOF;
   if  (isprime(n)!=0)
 printf("%d=1*%d\n",n,n);
   else fenjie(n);

 }

 int isprime(int n)
 {
    int j,limit;
    if(n<=1) return 0;
    if(n==2) return (n);
    if(n%2==0) return 0;
    limit=sqrt(n)+1;
    for(j=3;j<=limit;j+=2)
      if(n%j==0) return 0;
    return (n);
}
int fenjie(int n)
{  int i,k;

  k=sqrt(n)+1;
  for(i=2;i<=k;i++)
      if(isprime(i)!=0&&n%i==0)
 {
 n/=i;
 printf("i=%d\n",i);}

 if(n<i&&n%i==0)/*想从这里从新调用分解函数,关键是这里不能完成输出有重复素数乘积的数*/
      fenjie(n);
}
搜索更多相关主题的帖子: 素数 int 分解 函数 乘积 
2008-03-08 18:43
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
怎么没人回复啊,伤心!
希望明天能看到结果,谢谢各位了!
自己还是回去再看看吧!

多C多智慧,将C进行到底.........
2008-03-08 19:16
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
别伤心,咱这论坛,这种帖子有不少,自己找找.
2008-03-08 19:28
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
int fenjie(int n)
{  int i,k;

  k=n;
  do
  {for(i=2;i<=k;i++)
      if(isprime(i)!=0)
          if(n%i==0)
          { n/=i;
          printf("i=%d\n",i);}
}
  while(n>0);
  return(1);
}

[[it] 本帖最后由 blueboy82006 于 2008-3-8 19:45 编辑 [/it]]

2008-03-08 19:37
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
我想,如果采用平凡的解法,这不是一个复杂的问题。
2008-03-08 22:14
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
行了LS,不过输入一个数后就不能退出了,那是为什么呢?还有你能解释一下为什么你的行而我的不行.

多C多智慧,将C进行到底.........
2008-03-08 22:15
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
判等素数是多余的步骤。
2008-03-08 23:27
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
平凡的解法?
为什么判断素数是多余的步骤?不判断怎么知道整除的那个是不是素数呢?
如果可以的话,请指教.
谢谢!

多C多智慧,将C进行到底.........
2008-03-08 23:34
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
平凡的解法?
判等素数是多余的步骤。为什么呢?有更好的算法可以不判断素数吗?请指教!

多C多智慧,将C进行到底.........
2008-03-08 23:58
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
就是你的算法,判断素数是多余的。不信你去掉
2008-03-09 00:12
快速回复:有关素数的问题?
数据加载中...
 
   



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

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