鱼C论坛

 找回密码
 立即注册
查看: 1685|回复: 4

[已解决]题目如下 不知道哪里错了

[复制链接]
发表于 2017-4-16 17:33:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目内容:
一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。

现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。

提示:可以写一个函数来判断某个数是否是完数。

输入格式:
两个正整数,以空格分隔。

输出格式:
其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一行文字:
NIL
(输出NIL三个大写字母加回车)。

输入样例:
1 10

输出样例:
6
  1. #include <stdio.h>

  2. int isPrime(int n);

  3. int main()
  4. {
  5.         int n,m;
  6.         scanf("%d %d",&n,&m);
  7.         int a = n,b = m;
  8.         int ret = 0;     //n到m之间没有完数
  9.         if(1<=n && n<=m && m<=1000){
  10.                 while(a <= b){
  11.                 if(isPrime(a)){
  12.                 printf("%d ",a);
  13.                 ret = 1;
  14.                 }
  15.                 a++;
  16.                 }
  17.                 if(ret == 0){
  18.                 printf("NIL\n");
  19.                 }else{
  20.                 printf("\b ");
  21.                 }
  22.         }
  23.        
  24.         return 0;
  25. }

  26. int isPrime(int n)
  27. {
  28.         int i = 2,sum = 1;
  29.         int ret = 0;   //不是完数
  30.         int a = n;
  31.         for( ; i<n && n>1 ; i++ ){
  32.             if(n % i == 0){
  33.             sum += i;
  34.                 }
  35.         }
  36.         if(sum == n && n>1){
  37.                 ret = 1;
  38.         }
  39.         return ret;
  40. }
复制代码
最佳答案
2017-4-17 01:00:29
星若有泪 发表于 2017-4-16 22:19
没错啊   1-1000中只有三个完数  6 28 496     哪里错了??

对的啊,1-1000确实只有3个完数,完数要求这么苛刻,确实数量很少的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-16 18:54:42 | 显示全部楼层
没错啊,我用dev跑的结果是对的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-16 18:55:15 | 显示全部楼层
第一个完数是6,第二个完数是28.。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-16 22:19:25 | 显示全部楼层
Charles未晞 发表于 2017-4-16 18:55
第一个完数是6,第二个完数是28.。。。

没错啊   1-1000中只有三个完数  6 28 496     哪里错了??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-17 01:00:29 | 显示全部楼层    本楼为最佳答案   
星若有泪 发表于 2017-4-16 22:19
没错啊   1-1000中只有三个完数  6 28 496     哪里错了??

对的啊,1-1000确实只有3个完数,完数要求这么苛刻,确实数量很少的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 04:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表