用next_permutation()求排列判断,A4 4种
6 个
要源代码
@爱编程1314:
我只会 C# 代码,自己转换下吧,
int[] pms = PrimeNumber.GetPrimeNumbers(1000, 9999);
int[] x = pms.Where(m => m.ToString().ToArray().Distinct().Count() == 3).Where(m => (m.ToString().ToArray().Distinct().Except(new char[] { '1', '4', '9' })).Count() == 0).ToArray();
获取素数的代码网上一堆,自己找一个或自己实现个吧,我这个有性能问题,就不贴了。
@Srouni: 牛逼,我们还没学这么深呢,这个随机生成数查找含1,4,9的数吧
@Srouni: 你这个方案虽然好,但是计算的成本很高的,近1万个数字求素数,然后再检查149三个。
@爱编程1314:
对所有数字按照排列组合方式生成所有的可能(1499、1949、1994、4199、4919、4991、9149、9194、9914、9941),排除偶数,再逐个求是否为素数。
@519740105: 算法没优化好,数大比较耗时。
@爱编程1314:
是的。
Except 可能不太常用,其它的都是很常用的。
在这个示例中,找出 1061 个素数,再 where 成 508 ,再处理完后剩 6 个,是个比较长的过程,直接生成序列再计算,会好些。
@519740105:
不过,由于我的算法问题,就他的这个问题而言,生成包含1、4 、9的与我计算 1000~9999 所需的损耗也就差:
9999 - 最后一个 包含 149 的素数后所多出的几个数。
@Srouni: 不对我,说错了。 可少计算 几千呢。