鱼C论坛

 找回密码
 立即注册
查看: 3355|回复: 2

[已解决]1到n中求不包括本身因子数和等于本身的,每行输出一个

[复制链接]
发表于 2023-11-7 22:37:03 | 显示全部楼层 |阅读模式
本帖为密码帖 ,请输入密码 
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-7 22:37:15 | 显示全部楼层    本楼为最佳答案   
这段代码的功能是在给定的范围内(1到n),找出所有满足以下条件的数:它的因子之和等于它本身。代码中使用了两个嵌套的循环来实现这个功能。

首先,通过 scanf 函数从标准输入中读取一个整数n,表示范围的上限。

然后,外层循环从1遍历到n,对于每个数i,内层循环从1遍历到i-1,找出i的所有因子。

在内层循环中,使用if语句判断j是否是i的因子,即判断i是否能被j整除。如果是,则将j加到sum变量中。

接着,在内层循环的末尾,使用if语句判断sum是否等于i。如果是,则说明i的因子之和等于i本身,满足条件,将i输出到标准输出中。

最后,外层循环结束后,返回0表示程序正常结束。

然而,这段代码存在一个问题。在每次外层循环开始时,没有将sum重置为0,导致sum的值会一直累加。所以,需要在外层循环的开头加上 sum=0; 语句,将sum重置为0。

修改后的代码如下:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int n,i,j,sum=0;
  5.     scanf("%d",&n);
  6.     for(i=1;i<=n;i++)
  7.     {
  8.         sum=0; // 重置sum为0
  9.         for(j=1;j<i;j++)
  10.         {
  11.             if(i%j==0)
  12.             {
  13.                 sum+=j;
  14.             }
  15.         }
  16.         if(sum==i)
  17.         {
  18.             printf("%d\n",i);
  19.         }
  20.     }
  21.     return 0;
  22. }
复制代码


这样修改后的代码就能正确地找出满足条件的数并输出了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-7 22:38:39 | 显示全部楼层
找出不包括本身因子数和等于本身的数字

你可以使用以下的C语言代码来找出1到n中不包括本身因子数和等于本身的数字:
  1. #include <stdio.h>
  2. int main() {
  3.     int n, i, j, sum;
  4.     scanf("%d", &n);
  5.     for (i = 1; i <= n; i++) {
  6.         sum = 0;
  7.         for (j = 1; j < i; j++) {
  8.             if (i % j == 0) {
  9.                 sum += j;
  10.             }
  11.         }
  12.         if (sum == i) {
  13.             printf("%d\n", i);
  14.         }
  15.     }
  16.     return 0;
  17. }
复制代码

在上面的代码中,我们首先输入一个整数n,然后通过两个嵌套的for循环遍历1到n。在内层循环中,我们计算每个数的因子之和,并在外层循环中检查这个因子之和是否等于当前的数,如果相等,则输出该数。

这段代码的逻辑是正确的,但有一处小错误。在内层循环中,当计算因子之和时,应该将sum初始化为0,并且在判断sum是否等于i时,应该在内层循环结束后进行,而不是在内层循环中。

希望这能帮助你找出所需的数字。如果有任何疑问,欢迎继续提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 14:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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