3

整数 N が与えられ、他の素数では割り切れず、2、3、および/または 5 でのみ割り切れる最初の N 個の要素を見つける必要があります。

例えば:

N = 3
Results: 2,3,4
N = 5
Results: 2,3,4,5,6

間違い数 = 55..55/5 = 11..11 これは素数です。55..55 は 2、3、5 とは異なる素数で割り切れるので、数えません。

再帰関数が必要だと思いますが、アルゴリズムがどのようになるか想像できません

4

4 に答える 4

2
于 2012-09-26T15:05:41.350 に答える
2

探している数値は2^n * 3^m * 5^k、n、m、kの正の整数、 。の形式n+m+k > 0です。

ソートされた配列を事前に生成し、最初の配列を出力しNます。

于 2012-09-16T21:32:34.870 に答える
2

2、3、または 5 でしか割り切れない唯一の数は、i、  j、  k  = 0、1、...に対する2 i  × 3 j  × 5 kのべき乗です。

これらの数値は簡単に生成されます。

于 2012-09-16T21:31:24.663 に答える
0

常に力ずくの方法があります:

int[] A = int[N];
int i=0;
int j=2;
while(i<N)
{
    if(j%2==0)
    {
        if(j/2==1 || A contains j/2)
        {
             A[i]=j;
             i++;
        }
    }
    else if(j%3==0)
    {
        if(j/3==1 || A contains j/3)
        {
             A[i]=j;
             i++;
        }
    }
    else if(j%5==0)
    {
        if(j/5==1 || A contains j/5)
        {
             A[i]=j;
             i++;
        }
    }
    j++;
}

「AはXを含む」部分の場合、Aはそこでソートされるため、0からi-1の範囲で二分探索を使用できます。

于 2012-09-17T00:02:07.020 に答える