首页 > 解决方案 > 是否有确定总和中是否存在素数的函数?

问题描述

我有代表素数的常数。例如,

  enum Signals : long
    {
        LONGPULLBACK = 2,
        SHORTPULLBACK = 3,
        RSIOVERSOLD = 5,
        RSIOVERBOUGHT = 7,
        BOUGHTSIGNAL = 9,
        DOUBLEBOUGHTSIGNAL = 11,
        SOLDSIGNAL = 13,
        DOUBLESOLDSIGNAL = 17,
        MATRENDINGLONG = 19,
        MATRADENINGSHORT = 23


    }

对于触发的每个信号,我只需将其添加到总和中。每种类型的信号总是只有 1 个被触发。当我的总和为 25 时,是否有一个函数可以返回总和的质数部分,即 2,23?

标签: c#prime-factoring

解决方案


不。

但是你可以通过使用标志来实现你想要的。只是不要将 0 用作列表中值之一的标志之一。0 只能表示无,因为您永远无法检查是否添加了 0。并且这些值必须是 2 的幂。所以:1、2、4、8,... 如果您long用于计算符号位,则最多只能有 63 个值(除了 0)。我认为如果您使用ulong.

例子:

[Flags]
enum Signals : long
{
   None = 0,
   LONGPULLBACK = 1,
   SHORTPULLBACK = 2,
   RSIOVERSOLD = 4,
   RSIOVERBOUGHT = 8,
   //etc.
};

(我要补充一点,如果你将数字相乘,你试图做的事情会起作用。但这会使数字变得非常大。而且,分解不会那么简单。)


推荐阅读