csharp进阶练习题:k-primes中的步骤【难度:2级】:
一个自然数被称为** k-prime **,如果它具有恰好k个素数因子,则用多重性计算.
因此,当且仅当它是1-prime时,自然数是素数.
k-primes的例子:
k = 2 - > 4,6,9,10,14,15,21,22 ......
k = 3 - > 8,12,18,20,27,28,30 ......
k = 5 - > 32,48,72,80,108,112,......
k素数不是有规律的间隔.例如:在2到50之间,我们有以下2个素数:
`[4,6,9,10,14,15,21,22,25,26,33,34,35,38,39,46,49]
这个列表的两个k-prime之间的"步骤"是"2,3,1,4,1,6,1,3,1,7,1,1,3,1,7,3".
任务
我们将用参数写一个函数kprimes_step(k,step,start,nd)
:
-
k
(整数> 0)表示我们正在寻找的k-prime的类型, -
step
(整数> 0)表示我们想要在两个k-prime之间找到的step
, -
start
(整数> = 0),它给出了搜索的开始(包括开始), -
nd
(整数> =开始),它给出搜索结束(包括nd)
在上面的例子中,kprimes_step(2,2,0,50)
将返回[[4,6],[33,35]]
,它们是2-primes对
2到50之间有2个步骤.
所以这个函数应该返回一个k-prime数的所有对(或元组)的数组,其间隔步长为step
在限制之间start
,nd
.此数组可以为空.
例子:
kprimes_step(2,2,0,50)=> [[4,6],[33,35]]
kprimes_step(6,14,2133665,2113889)=> [[2113722,2113736]])
kprimes_step(2,10,0,50)=> [[4,14],[15,25],[25,35],[39,49]]
kprimes_step(5,20,0,50)=> []
编程目标:
using System;
using System.Collections.Generic;
using System.Linq;
public class KprimesSteps
{
public static List KprimesStep(int k, int step, long , long nd)
{
// your code
}
}
测试样例:
using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
[TestFixture]
public static class KprimesStepsTests
{
for (int i = 0; i
## 最佳答案(多种解法):
[点击查看答案](http://dd.ma/xn6FQHgZ)
## 更多关联题目:
## 免责申明
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
<font color=#eeeeee size=1>题目收集至https://www.codewars.com/</font>
<font color=#eeeeee size=1>https://www.codewars.com/kata/steps-in-k-primes</font>