| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 279 人关注过本帖
标题:求助:求完全数遇到的问题
收藏  订阅  推荐  打印 
keil99
Rank: 1
等级:新手上路
帖子:8
积分:198
注册:2008-9-16
求助:求完全数遇到的问题

谢谢个位高手了  我想了半天是在想不出为什么得不到要的答案


#include<iostream>
#include<math.h>
int main()
{
    int m,i,k,p=2,l;
    int abc();
   while(p<=100&&abc(1))
    {m=2^p-1;
    k=sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)break;
   
    if(i>k)
    {l=m*(2^(p-1));
     printf("%d",l);
    system("pause");
           }
           }
           p++;
   

    }
   
int abc(int p)
{
    int j,m;
    m=sqrt(p);
    for(j=0;i<=m;j++)
    if(p%j==0)break;
    if(j>m)
    return(1);
    }
搜索更多相关主题的帖子: 完全数  
2008-9-20 10:40
shujuk
Rank: 1
等级:新手上路
帖子:16
积分:288
注册:2008-9-17

学习中,看不懂程序。不过下面for()里面是j吧。
int abc(int p)
{
    int j,m;
    m=sqrt(p);
    for(j=0;i<=m;j++)
    if(p%j==0)break;
    if(j>m)
    return(1);
    }
2008-9-20 12:14
StarWing83
Rank: 12Rank: 12Rank: 12
来自:湖北工业大学
等级:版主
威望:9
帖子:2483
积分:26219
注册:2007-11-16

哎,大家是不是都想当姜太公想疯了?光想是想不出什么的,得不出答案,要看,要调,要动手!!

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-9-20 13:13
中学者
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:3376
积分:34562
注册:2007-9-14

看书啊~

汇编.....
2008-9-20 13:16
keil99
Rank: 1
等级:新手上路
帖子:8
积分:198
注册:2008-9-16

我知道完全数可以用很简单的程序写
但是我今天上网查了下  它的性质
就用了梅森素数 写    不过我能力确实还有限  哎~~~~
2008-9-20 13:29
yyssxj
Rank: 1
来自:江苏
等级:新手上路
威望:1
帖子:14
积分:244
注册:2008-9-19

请说明一下什么是完全数!不懂
另外代码有明显错误,比如第一行的p的赋值
2008-9-20 13:30
keil99
Rank: 1
等级:新手上路
帖子:8
积分:198
注册:2008-9-16

#include<iostream>
#include<math.h>
int main()
{
    int m,i,k,p=2,l;
    int abc(int p);
   if(p<=100&&abc(p)==1)
    {m=2^p-1;
    k=sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)break;
   
    if(i>k)
    {l=m*(2^(p-1));
     printf("%d",l);
    system("pause");
           }
           }
           p++;
   

    }
   
int abc(int p)
{
    int j,m;
    m=sqrt(p);
    for(j=0;j<=m;j++)
    if(p%j==0)break;
    if(j>m)
    return(1);
    }


我把代码改成这样  虽然不报错 但是运行时报错
2008-9-20 13:43
mehary
Rank: 1
等级:新手上路
帖子:4
积分:144
注册:2008-9-28

楼上的不论你的j是否能被p整除其返回值总会为1...如果我没看错的话函数abc应该是判断是否为素数吧...用下面的试试
int abc(int p)
{
    int j,m,flag;
    m=sqrt(p);
    for(j=0;i<=m;j++)
    if(p%j==0) flag=0;break;
    if(j>m) flag=1;
    return(flag);
    }
2008-9-29 11:04
mehary
Rank: 1
等级:新手上路
帖子:4
积分:144
注册:2008-9-28

另外,while(p<=100&&abc(1))
这句也有问题...函数abc中的参数应该是前面定义的l吧...但是他没有值,应该要加一个scanf语句
2008-9-29 11:07
mehary
Rank: 1
等级:新手上路
帖子:4
积分:144
注册:2008-9-28

如果还有问题的话..将main函数中的函数声明int abc()改为int abc(int)...C语言规定函数声明必须指定参数类型.参数名可以省略

另:P++应放在while循环内部...否则为死循环
#include<iostream>
#include<math.h>
int main()
{
    int m,i,k,p=2,l;
    int abc();
    scanf("%d",&l);
   while(p<=100&&abc(1))
    {m=2^p-1;
    k=sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)break;
   
    if(i>k)
    {l=m*(2^(p-1));
     printf("%d",l);
    system("pause");
           }
           
           p++;
   }

    }
   
int abc(int p)
{
    int j,m,flag;
    m=sqrt(p);
    for(j=0;j<=m;j++)
    if(p%j==0) flag=0;break;
    if(j>m) flag=1;
    return(flag);
    }
2008-9-29 11:21
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.065342 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved