| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1668 人关注过本帖
标题:求助:求完全数遇到的问题
只看楼主 加入收藏
keil99
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-16
收藏
 问题点数:0 回复次数:10 
求助:求完全数遇到的问题
谢谢个位高手了  我想了半天是在想不出为什么得不到要的答案


#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-09-20 10:40
shujuk
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:100
注 册:2008-9-17
收藏
得分:0 
学习中,看不懂程序。不过下面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-09-20 12:14
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
哎,大家是不是都想当姜太公想疯了?光想是想不出什么的,得不出答案,要看,要调,要动手!!

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-20 13:13
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
看书啊~

樱花大战,  有爱.
2008-09-20 13:16
keil99
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-16
收藏
得分:0 
我知道完全数可以用很简单的程序写
但是我今天上网查了下  它的性质
就用了梅森素数 写    不过我能力确实还有限  哎~~~~
2008-09-20 13:29
yyssxj
Rank: 1
来 自:江苏
等 级:新手上路
威 望:1
帖 子:14
专家分:0
注 册:2008-9-19
收藏
得分:0 
请说明一下什么是完全数!不懂
另外代码有明显错误,比如第一行的p的赋值
2008-09-20 13:30
keil99
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-16
收藏
得分:0 
#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-09-20 13:43
mehary
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-28
收藏
得分:0 
楼上的不论你的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-09-29 11:04
mehary
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-28
收藏
得分:0 
另外,while(p<=100&&abc(1))
这句也有问题...函数abc中的参数应该是前面定义的l吧...但是他没有值,应该要加一个scanf语句
2008-09-29 11:07
mehary
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-28
收藏
得分:0 
如果还有问题的话..将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-09-29 11:21
快速回复:求助:求完全数遇到的问题
数据加载中...
 
   



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

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