gpt4 book ai didi

math - 使用基本算术运算实现相等函数

转载 作者:行者123 更新时间:2023-12-01 05:20:57 27 4
gpt4 key购买 nike

给定正整数输入 xy,是否有一个数学公式可以在 x 的情况下返回 1 >==y0 否则?不幸的是,我不得不使用一个只允许我使用以下符号的工具:数字 0-9;小数点 .;括号 ();以及四种基本算术运算 +-/*

目前我依赖于将除以零计算为零的工具。 (我不知道这是错误还是功能。)因此,我能够使用 ((x-y)/(y-x))+1。显然,这是丑陋和不理想的,特别是在它是一个错误并且他们在未来的版本中修复它的情况下。

最佳答案

利用 C 中的整数除法向 0 截断,下面的代码运行良好。没有乘法溢出。为所有“正整数输入 xy”定义良好。

(x/y) * (y/x)

#include <stdio.h>
#include <limits.h>

void etest(unsigned x, unsigned y) {
unsigned ref = x == y;
unsigned z = (x/y) * (y/x);
if (ref != z) {
printf("%u %u %u %u\n", x,y,z,ref);
}
}

void etests(void) {
unsigned list[] = { 1,2,3,4,5,6,7,8,9,10,100,1000, UINT_MAX/2 , UINT_MAX - 1, UINT_MAX };
for (unsigned x = 0; x < sizeof list/sizeof list[0]; x++) {
for (unsigned y = 0; y < sizeof list/sizeof list[0]; y++) {
etest(list[x], list[y]);
}
}
}

int main(void) {
etests();
printf("Done\n");
return 0;
}

输出(与x == y没有区别)

Done

关于math - 使用基本算术运算实现相等函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140830/

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