| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2425 人关注过本帖
标题:素数分解
只看楼主 加入收藏
求智者
Rank: 2
等 级:论坛游民
帖 子:39
专家分:32
注 册:2012-2-14
结帖率:90%
收藏
已结贴  问题点数:5 回复次数:4 
素数分解
用递归求素数其改正
    #include<stdio.h>
#include<math.h>
int jieguo(int a,int d);
int isprime(int a);
main()
{
   int a;
   scanf("%d",&a);
   jieguo(a,a-1);
}
int jieguo(int a,int d)/*输出结果*/
{
//    printf("%d\n ",d);
   int x,g=1,sum=1,z;
   while(g)
   {
   x=a%d;
    d--;
   if(x==0)
   g=0;
   
   }
   
 if(isprime(d+1)==1)
 {
    printf("%d* ",d+1);
    if(d==1)
        return 0;
     return jieguo(a,d);/*递归*/
 }
 else
 {
     if(d==1)
         return 0;
  return jieguo(a,d);/*递归*/
 }
}
int isprime(int a)/*判断是否为素数*/
{
    int v,n=0,i;
    if(a==2)
        return 1;
    if(a==1)
        return 0;
    double x=sqrt(a);
    for(i=2;i<=sqrt(a)+1;i++)
        if(a%i==0)
            n++;
    if(n!=0)
       return 0;
    else
       return 1;
}
搜索更多相关主题的帖子: return include 
2012-02-15 09:01
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:4 
搜索以前的贴子吧,很多这样的。

梅尚程荀
马谭杨奚







                                                       
2012-02-15 09:54
求智者
Rank: 2
等 级:论坛游民
帖 子:39
专家分:32
注 册:2012-2-14
收藏
得分:0 
你脑子有问题能解绝说话不能闭嘴
2012-02-15 10:16
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用求智者在2012-2-15 10:16:50的发言:

你脑子有问题能解绝说话不能闭嘴
那个脑子没有问题的可以来帮帮。

[ 本帖最后由 有容就大 于 2012-2-15 14:44 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-02-15 10:27
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 3楼 求智者
这位同学说话客气一点  
http://acm.hdu.
杭电的1164就是这样的题目  原理很简单 就是从2开始试除  题目数据范围很小 先直接把素数筛出来
程序代码:
#include<stdio.h>
bool notprime[65536];
void calc()
{
    for(int i=2;i<=256;i++)
         if(notprime[i]==0)
           for(int j=i+i;j<=65535;j+=i)
             notprime[j]=1;
} 
int solve(int k,int n)//得到n的>=k的素数因子
{
    for(int i=k;i<=256;i++)
      if(notprime[i]==0)
        if(n%i==0)
          return i;
} 
int main()
{
    int n,i,j;
    calc();
    while(scanf("%d",&n)!=EOF)
    {
        int k=2;
        while(notprime[n])
        {
            k=solve(k,n);
            printf("%d*",k);
            n/=k;
        } 
        printf("%d\n",n);
    } 
    return 0; 
}


                                         
===========深入<----------------->浅出============
2012-02-15 16:13
快速回复:素数分解
数据加载中...
 
   



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

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