gpt4 book ai didi

c - Fisher 数检查结果不正确

转载 作者:行者123 更新时间:2023-11-30 18:46:26 26 4
gpt4 key购买 nike

计划详细信息:费希尔编号

费舍尔数是一个整数,其因子(包括其自身)的乘积等于该数的立方。例如,12是费希尔数,因为 123 = 2 x 3 x 4 x 6 x 12。

示例:

Input: 12  
Output: true (12<sup>3</sup> = 2 x 3 x 4 x 6 x 12)

Input: 8
Output: false (8<sup>3</sup> != 2 x 4 x 8)

目标:

  • 编写一个程序来检查用户输入是否是 Fisher 数。
  • 打印给定范围内的所有 Fisher 数
<小时/>

这是我的代码:

#include <stdio.h>
#include <conio.h>
int ch, product = 1, cube, num, i, j, min, max;

// Check Function

void check() {
int i;
printf("Enter the Number to check whether It is Fisher or Not\n");
scanf("%d", &num);
cube = num * num * num;
for(i = 2; i <= num; i++) {
if(num % i == 0) {
product = product * i;
}
}
if(cube == product) {
printf("It is a Fisher Number!\n");
}
else {
printf("It is not a Fisher Number\n");
}
}

// RANGE FUNCTION

void range() {
printf("Enter the Minimum and Maximum value of Range\n");
scanf("%d%d", &min, &max);
for(i = min; i <= max; i++) {
cube = i * i * i;
for(j = 1; j <= i; j++) {
if(i % j == 0) {
product = product * i;
}
}
if(cube == product) {
printf("%d\n", i);
}
}
}

void main() {
clrscr();
printf("Enter Your Choice \n");
printf("1 - Check Fisher Number \n");
printf("2 - Display Fisher Numbers in a Range \n");
scanf("%d", &ch);
switch(ch) {
case 1: check();
break;
case 2: range();
break;
default: printf("Enter Valid Choice \n");
}
getch();
}

<强> Output picture和文字:

Enter Your Choice 
1 - Check Fisher Number
2 - Display Fisher Numbers in a Range
2
Enter the Minimum and Maximum value of Range
1 40
1

我没有得到正确的范围输出。例如,如果范围设置为1到15,则仅显示1这是错误的!

最佳答案

您应该在此处乘以j:

if(i%j == 0) {
product = product * i;
}

如果您使用比 ij 更有意义的变量名称,情况会更明显。

您还需要在内循环之前重置 product 变量(为什么它是一个全局变量?难道您不知道它们是邪恶的吗?)

cube = i * i * i;
product = 1;
for(j=1;j<=i;j++) { ...

关于c - Fisher 数检查结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com