我想知道上述系列的模式,以便为上述系列编写代码。 我认为上面的系列是两个不同系列1,2,4,6的混合,...和 1,2,2,.. 请帮助我完成这个序列,并告诉我是否以正确的方式思考。
逻辑:--
系列 1-> Prime-1,即 [1, 2, 4, 6, 10, 12, 16, 18, 22, 28, 30, 36.....]
系列 2-> 数字系列,即 [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5....]
最终输出 -> 交替序列,即 [1 1 2 2 4 2 6 3 10 3 12 3 16 4 18 4 22 4 28 4....]
注意:
可能还有另一种逻辑,但通过给定的问题,这个系列可以通过下面的程序来识别。
请不要用于任何竞赛测试/考试
导入数学
全局li_prime;全球li_series;XP=0 def 素数(大小(:
全局li_prime;计数 = 2;
而伦(li_prime( isprime = 对于范围(2, int(math.sqrt(count( + 1((中的 x 为真(: 如果计数 % x == 0: isprime = 假
中断 如果 isprime:li_prime.append(count-1(count += 1
def series(size(: 全局li_series 对于范围(大小+1(中的 i: 对于范围 (i( 中的 j: li_series.append(i( 如果 len(li_series(>size:
中断 def main((:
全局 XP 全局 li_prime 全局li_series
测试用例=int(input(''((
对于 I 在范围(测试用例(:
li_series=[] li_prime=[] size=int(input(''(( prime(size( series(size( li_prime=li_prime[:size] li_series=li_series[:size] lc=[] for i in range(size//2+1(:
lc.append(str(li_prime[i](( lc.append(str(li_series[i]((
lc=lc[:size]
main((
它是最大公约数 (gcd( 为 1 的级数,也称为欧拉全能函数。
系列格式 = {1 1 2 2 4 2 6 32 .....168 80 216 120 164 100}
法典:
public static void main(String[] args) {
//n is the input for the size of the series
for(int j=1;j<=n;j++){
System.out.print(calSeriesVal(j)+" ");
}
}
private static int calDivisor(int a, int b)
{
if (a == 0)
return b;
return calDivisor(b % a, a);
}
private static int calSeriesVal(int n)
{
int val = 1;
for (int i = 2; i < n; i++)
if (calDivisor(i, n) == 1)
val++;
return val;
}