首页 新闻 赞助 找找看

C#算法- 寻找1000以下的4个素数

0
悬赏园豆:5 [已解决问题] 解决于 2020-01-19 17:09

需要用C#.net 写一个算法
寻找1000以下的4个素数

这4个素数的的乘积是一个连续的或者相邻两个数字相等的12位数

比如这4个素数的乘积 如果是 111234556678 是对的

如果是 123345667789 也是对的

但如果4个素数的乘积是 123567889724 就不是对的,这样的4个素数就不对,不是我们想要的答案 如果乘积是 123456789879 同样也是不对的

要求考虑performance

请问哪位算法好的高手能给出性能比较好的解决方案么

新西兰程序员的主页 新西兰程序员 | 初学一级 | 园豆:3
提问于:2019-10-19 18:27
< >
分享
最佳答案
0

“连续的或者相邻两个数字相等的”是什么意思。“连续的”这三个字修饰的是”两个数字“还是12位数。
你指的是不是这样的数:这个十二位数的每个位上的数字都不小于其上一位的数字,如果有的话。
111111111111和999999999999这样类似的数符不符合这一个要求。

基本解决方案就是做两个素数表,一个存放1-100的素数,另一个存放100-1000的素数。
然后先把所有符合“连续的或者相邻两个数字相等的12位数”找出来(也就一万个,还是很好盘的)。
如果某个数能被1-100内的数整除,那就肯定不符合要求,不能的话再去判断能不能因式分解成四个100-1000内的素数
时间复杂度是m*n,m是符合要求的12位数的个数,n是1000内的素数个数,空间复杂度是m+n

收获园豆:5
轻红 | 菜鸟二级 |园豆:208 | 2019-10-21 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册