int is_ter(int x)
{
//it is not a TWOs nor a FIVEs and not 1.0
g:
if(x%2 !=0 && x%5 !=0 && x!=1)
return 0;
// make sure it is 1.0
if(x%2 !=0 && x%5 !=0 && x==1)
return 1;
//check if it is a two
if(x%2==0){
x/=2;
goto g;
}
if(x%5==0)
{
x/=5;
goto g;
}
}
回答
不,完全没有。
首先,你的小数是一个整数。其次,你可能应该是乘法而不是分裂。第三,使用小数时,舍入误差会一直出现,所以在比较小数与某些事物时需要考虑这一点。
而且最重要的是,存储计算机上的所有小数是“终止”,因为在一台计算机,一个十进制分数不小于有理数M/N多得多,其中N是2的一个
功率您应该阅读约floating point numbers。
好吧让我解释这更多 我有一个分数a/b ,我只发送b到这个函数 所以如果我们有5984845495/32 我们知道这部分是终止的(不重复连续期间).. 所以我不检查一个小数本身,这是如此不合理。 – 2012-07-22 12:15:11
这是一个不同的问题。你需要看看b是否有一个不是2或5的素数因子。因此,除以2直到你不能再存在,然后除以5直到你不能再存在。你的代码试图做这样的事情,但并没有真正做到这一点。 – zmbq 2012-07-22 12:19:48
从它的外观来看,你想检查1/x是否正在终止。
你的代码看起来有点混乱。你要检查所有的primefactors是否2或5:
int is_ter(unsigned int x)
{
while (x>1)
{
if (x%2==0) x=x/2;
else if (x%5==0) x=x/5;
else return 0;
}
return 1;
}
应该做的伎俩(好吧,它说1/0终止,这意味着什么这将终止程序,所以它的。不完全错误......)
是的,我忘了提及输入x> 0 尽管如此,我用你的代码,而是我得到了相同的结果.. – 2012-07-22 12:22:39
- 1. 无法检查用户输入是否小于某个数字
- 2. 这个算法会终止吗?
- 3. 如何检查线程是否终止?
- 4. Boost.Process检查进程是否终止
- 5. 如何检查state.highstate是否适用于小生物?
- 6. Oracle:如何检测客户端进程终止是否适用于sqlplus?
- 7. 检查日期是否大于/小于
- 8. RTTI是否适用于最终?
- 9. 用于检查URL是否适合模式的Java方法
- 10. 如何检查本地绑定函数是否适用于Modernizr
- 11. 检查第二个数字是否大于或小于第一个数字
- 12. 程序检查整数是否大于,小于或等于
- 13. Powershell:检查变量是否小于15.0.0.152
- 14. 如何在使用pthread时检查线程是否被终止?
- 15. 计算属性与JPA。这是否适用于我的情况?
- 16. 检查Process.Start终止
- 17. 如何检测运算符[]是否适用于Type?
- 18. RVO是否适用于这种情况?
- 19. 这是否适用于会话管理?
- 20. 这是否适用于仿制药?
- 21. 是否存在单词检查算法?
- 22. 算法检查是否有n元素的数组是最小堆
- 23. 检查数字是否有小数点
- 24. 算法适用于:打印机检查程序
- 25. 如何检查一个ID是否小于另一个
- 26. 这个最小生成树算法是否正确?
- 27. 检查jPlayer是否停止
- 28. 检查用户输入是否适合
- 29. 检查建议是否适用
- 30. 检查一个变量是否存在于Python中 - 不适用于自己
什么是'终止小数'?你为什么使用'goto'?例如,如果x = 0,则有一个inifite循环。否定也会造成严重破坏。 – zmbq 2012-07-22 12:07:20
小数点不具有重复周期 1/5正在终止,因为它== 0.2 而1/6和1/7不是 并且关于输入x总是> 0 – 2012-07-22 12:09:23
啊,好的。所以不行。 – zmbq 2012-07-22 12:10:18