相关疑难解决方法(0)

当用于除法时,'/'和'//'之间有什么区别?

使用一个比另一个有好处吗?在Python 2中,它们似乎都返回相同的结果:

>>> 6/3
2
>>> 6//3
2
Run Code Online (Sandbox Code Playgroud)

python math syntax operators

431
推荐指数
9
解决办法
50万
查看次数

有用的代码使用reduce()?

这里有没有人有任何有用的代码在python中使用reduce()函数?除了我们在示例中看到的通常的+和*之外,还有其他代码吗?

通过GvR 参考Python 3000中的reduce()命运

python functional-programming

120
推荐指数
12
解决办法
8万
查看次数

查找一系列数字的最小公倍数

今天我读了一篇有趣的DailyWTF帖子,"Out of All the Possible Answers ...",我对它感兴趣,足以挖掘提交它的原始论坛帖子.这让我想到如何解决这个有趣的问题 - 最初的问题是在Project Euler上提出的:

2520是可以除以1到10中的每个数字而没有任何余数的最小数字.

可以被1到20的所有数字整除的最小数字是多少?

要将此作为一个编程问题进行改革,您将如何创建一个能够为任意数字列表找到最小公倍数的函数?

尽管我对编程很感兴趣,但我对纯数学的表现非常糟糕,但是我可以通过一些谷歌搜索和一些实验来解决这个问题.我很好奇SO用户可能采取的其他方法.如果你这么倾向,请在下面发布一些代码,希望还有一个解释.请注意,虽然我确定存在用于以各种语言计算GCD和LCM的库,但我更感兴趣的是比调用库函数更直接地显示逻辑的东西:-)

我最熟悉Python,C,C++和Perl,但您喜欢的任何语言都是受欢迎的.奖励积分,用于解释像我一样的其他数学挑战的人的逻辑.

编辑:提交后我确实发现这个类似的问题3个或更多数字的最小公倍数,但它回答了我已经想出的相同的基本代码,并没有真正的解释,所以我觉得这是不同的,足以让我们开放.

algorithm math lcm

20
推荐指数
4
解决办法
2万
查看次数

最不常见的多重

我有当前的编码,曾经是一个goto但我被告知不再使用goto,因为它不赞成.我有麻烦改变它说一段时间循环.我对C#和一般编程都很陌生,所以这对我来说是一些全新的东西.任何帮助,将不胜感激.实际问题是输入两个数字并找到最低的公倍数.

这是带goto的原文:

BOB:
    if (b < d)
    {                
        a++;
        myInt = myInt * a;
        b = myInt;
        myInt = myInt / a;

        if (b % myInt2 == 0)
        {
            Console.Write("{0} ", h);
            Console.ReadLine();
        }

    }
    if (d < b)
    {
        c++;
        myInt2 = myInt2 * c;
        d = myInt2;
        myInt2 = myInt2 / c;

        if (d % myInt == 0)
        {
            Console.Write("{0} ", t);
            Console.ReadLine();
        }
        else
        {
            goto BOB;
        }

    }
    else
    {
        goto BOB;
    }

   }
Run Code Online (Sandbox Code Playgroud)

c# lcm

19
推荐指数
3
解决办法
2万
查看次数

Python中的Euler 5项目 - 如何优化我的解决方案?

我最近一直在研究Python中的Project Euler问题.我对Python很陌生,作为程序员还是有点新鲜.

无论如何,我遇到了与速度相关的问题,为问题#5编写了解决方案.问题是,

"2520是可以除以1到10之间的每个数字而没有任何余数的最小数字.可以被1到20的所有数字整除的最小正数是多少?"

我已经检查了一些,我无法找到任何与Python有关的问题.有一些已完成的脚本,但我想避免完全查看其他代码,如果可能的话,而不是想改进我自己的代码.

我编写的代码成功运行2520的示例和范围1到10,并且应该可以直接修改以处理问题.但是,在运行它时,我没有得到答案.据推测,这是一个非常高的数字,代码不够快.打印正在检查的当前号码似乎支持这一点,达到数百万而没有得到答案.

代码,在它的当前实现如下:

rangemax = 20
def div_check(n):
    for i in xrange(11,rangemax+1):
        if n % i == 0:
            continue
        else:
            return False
    return True

if __name__ == '__main__':
   num = 2
   while not div_check(num):
       print num
       num += 2
   print num
Run Code Online (Sandbox Code Playgroud)

我已经做了一些改变,我认为应该有助于提高速度.首先,对于一个数字可以被所有数字1到20整除,它必须是偶数,因为只有偶数可以被2整除.因此,我可以增加2而不是1.此外,虽然我没有想到我自己,我发现有人指出一个可以被11到20整除的数字可以被1到10整除.(没有检查那个,但似乎合理)

但代码仍然不够快.我可以进行哪些优化(程序化或数学)来使这段代码运行得更快?

提前感谢任何可以提供帮助的人.

python

9
推荐指数
3
解决办法
4万
查看次数

简化分数

如何在PHP中简化一小部分?

例如,转换40/1002/5.

我能想到的唯一方法是对两个数字进行素数分解并比较结果,但我不确定如何做到这一点.

php

9
推荐指数
1
解决办法
3922
查看次数

在numpy数组中查找具有最高平均值的行

给出以下数组:

complete_matrix = numpy.array([
    [0, 1, 2, 4],
    [1, 0, 3, 5],
    [2, 3, 0, 6],
    [4, 5, 6, 0]])
Run Code Online (Sandbox Code Playgroud)

我想确定平均值最高的行,不包括对角线零.因此,在这种情况下,我将能够识别出complete_matrix[:,3]具有最高平均值的行.

python arrays numpy

6
推荐指数
2
解决办法
1832
查看次数

替换已弃用的 `fractions.gcd()` 函数?

我想计算作为实例实现的两个有理数的最大公约数fractions.Fraction。尽管打印了弃用警告,但它按预期工作:

In [1]: gcd(Fraction(2, 3), Fraction(2, 3))
/usr/local/bin/ipython:1: DeprecationWarning: fractions.gcd() is deprecated. Use math.gcd() instead.
  #!/usr/local/opt/python3/bin/python3.6
Out[1]: Fraction(1, 6)
Run Code Online (Sandbox Code Playgroud)

查看文档,我可以看到它fractions.gcd()确实已被弃用,并且邀请用户使用math.gcd()。问题是后者不支持有理数:

In [2]: gcd(Fraction(2, 3), Fraction(2, 3))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-c3ad2389f290> in <module>()
----> 1 gcd(Fraction(2, 3), Fraction(2, 3))

TypeError: 'Fraction' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud)

我可以使用哪个函数来替换fractions.gcd()?我不是在寻找此处使用的实际算法,而是在寻找已弃用函数的替代品。

python fractions python-3.x

3
推荐指数
1
解决办法
2997
查看次数

2
推荐指数
1
解决办法
2万
查看次数

项目Euler#5(最小的正数除以1到20之间的所有数字):优化方法?〜Java的

问题5: 2520是可以除以1到10中的每个数字而没有任何余数的最小数字.可以被1到20的所有数字整除的最小正数是多少?

我已经解决了Project Euler的问题5

这是Java代码:

 static long FindLcm(long a,long b)
 {
     long lcm,hcf = 0;
     long i=1;
     long ger=a>b?a:b;
     while(i<ger)
     {
         if((a%i==0) && (b%i==0))
             hcf=i;
         i++;
     }
     lcm=(a*b)/hcf;
     return lcm;
 }
 static void FindMultiple()
 {
     long lcm=1;
     for(long i=2;i<=20;i++)
     {
         lcm=FindLcm(lcm,i);
     }   
     System.out.println("Lcm="+lcm);
 }
Run Code Online (Sandbox Code Playgroud)

怎么能优化这个?

java optimization lcm

1
推荐指数
1
解决办法
2万
查看次数