File tree Expand file tree Collapse file tree 4 files changed +220
-0
lines changed
solution/2600-2699/2601.Prime Subtraction Operation Expand file tree Collapse file tree 4 files changed +220
-0
lines changed Original file line number Diff line number Diff line change @@ -274,4 +274,84 @@ function primeSubOperation(nums: number[]): boolean {
274274
275275<!-- solution: end -->
276276
277+ <!-- solution: start -->
278+
279+ ### Solution 2: Preprocessing prime numbers
280+
281+ <!-- tabs: start -->
282+
283+ #### TypeScript
284+
285+ ``` ts
286+ function primeSubOperation(nums : number []): boolean {
287+ const p: number [] = [];
288+
289+ for (let i = 2 ; i < Math .max (... nums ); i ++ ) {
290+ let isPrime = true ;
291+
292+ for (const x of p ) {
293+ if (i % x === 0 ) {
294+ isPrime = false ;
295+ break ;
296+ }
297+ }
298+
299+ while (isPrime && p .length <= i ) {
300+ p .push (i );
301+ }
302+ }
303+
304+ for (let i = nums .length - 2 ; i >= 0 ; i -- ) {
305+ if (nums [i ] < nums [i + 1 ]) continue ;
306+
307+ const [x, next] = [nums [i ], nums [i + 1 ]];
308+ const prime = p [x - next + 1 ];
309+
310+ if (! prime || prime >= x ) return false ;
311+ nums [i ] -= prime ;
312+ }
313+
314+ return true ;
315+ }
316+ ```
317+
318+ #### JavaScript
319+
320+ ``` js
321+ function primeSubOperation (nums ) {
322+ const p = [];
323+
324+ for (let i = 2 ; i < Math .max (... nums); i++ ) {
325+ let isPrime = true ;
326+
327+ for (const x of p) {
328+ if (i % x === 0 ) {
329+ isPrime = false ;
330+ break ;
331+ }
332+ }
333+
334+ while (isPrime && p .length <= i) {
335+ p .push (i);
336+ }
337+ }
338+
339+ for (let i = nums .length - 2 ; i >= 0 ; i-- ) {
340+ if (nums[i] < nums[i + 1 ]) continue ;
341+
342+ const [x , next ] = [nums[i], nums[i + 1 ]];
343+ const prime = p[x - next + 1 ];
344+
345+ if (! prime || prime >= x) return false ;
346+ nums[i] -= prime;
347+ }
348+
349+ return true ;
350+ }
351+ ```
352+
353+ <!-- tabs: end -->
354+
355+ <!-- solution: end -->
356+
277357<!-- problem: end -->
Original file line number Diff line number Diff line change @@ -271,4 +271,84 @@ function primeSubOperation(nums: number[]): boolean {
271271
272272<!-- solution: end -->
273273
274+ <!-- solution: start -->
275+
276+ ### Solution 2: Preprocessing prime numbers
277+
278+ <!-- tabs: start -->
279+
280+ #### TypeScript
281+
282+ ``` ts
283+ function primeSubOperation(nums : number []): boolean {
284+ const p: number [] = [];
285+
286+ for (let i = 2 ; i < Math .max (... nums ); i ++ ) {
287+ let isPrime = true ;
288+
289+ for (const x of p ) {
290+ if (i % x === 0 ) {
291+ isPrime = false ;
292+ break ;
293+ }
294+ }
295+
296+ while (isPrime && p .length <= i ) {
297+ p .push (i );
298+ }
299+ }
300+
301+ for (let i = nums .length - 2 ; i >= 0 ; i -- ) {
302+ if (nums [i ] < nums [i + 1 ]) continue ;
303+
304+ const [x, next] = [nums [i ], nums [i + 1 ]];
305+ const prime = p [x - next + 1 ];
306+
307+ if (! prime || prime >= x ) return false ;
308+ nums [i ] -= prime ;
309+ }
310+
311+ return true ;
312+ }
313+ ```
314+
315+ #### JavaScript
316+
317+ ``` js
318+ function primeSubOperation (nums ) {
319+ const p = [];
320+
321+ for (let i = 2 ; i < Math .max (... nums); i++ ) {
322+ let isPrime = true ;
323+
324+ for (const x of p) {
325+ if (i % x === 0 ) {
326+ isPrime = false ;
327+ break ;
328+ }
329+ }
330+
331+ while (isPrime && p .length <= i) {
332+ p .push (i);
333+ }
334+ }
335+
336+ for (let i = nums .length - 2 ; i >= 0 ; i-- ) {
337+ if (nums[i] < nums[i + 1 ]) continue ;
338+
339+ const [x , next ] = [nums[i], nums[i + 1 ]];
340+ const prime = p[x - next + 1 ];
341+
342+ if (! prime || prime >= x) return false ;
343+ nums[i] -= prime;
344+ }
345+
346+ return true ;
347+ }
348+ ```
349+
350+ <!-- tabs: end -->
351+
352+ <!-- solution: end -->
353+
274354<!-- problem: end -->
Original file line number Diff line number Diff line change 1+ function primeSubOperation ( nums ) {
2+ const p = [ ] ;
3+
4+ for ( let i = 2 ; i < Math . max ( ...nums ) ; i ++ ) {
5+ let isPrime = true ;
6+
7+ for ( const x of p ) {
8+ if ( i % x === 0 ) {
9+ isPrime = false ;
10+ break ;
11+ }
12+ }
13+
14+ while ( isPrime && p . length <= i ) {
15+ p . push ( i ) ;
16+ }
17+ }
18+
19+ for ( let i = nums . length - 2 ; i >= 0 ; i -- ) {
20+ if ( nums [ i ] < nums [ i + 1 ] ) continue ;
21+
22+ const [ x , next ] = [ nums [ i ] , nums [ i + 1 ] ] ;
23+ const prime = p [ x - next + 1 ] ;
24+
25+ if ( ! prime || prime >= x ) return false ;
26+ nums [ i ] -= prime ;
27+ }
28+
29+ return true ;
30+ }
Original file line number Diff line number Diff line change 1+ function primeSubOperation ( nums : number [ ] ) : boolean {
2+ const p : number [ ] = [ ] ;
3+
4+ for ( let i = 2 ; i < Math . max ( ...nums ) ; i ++ ) {
5+ let isPrime = true ;
6+
7+ for ( const x of p ) {
8+ if ( i % x === 0 ) {
9+ isPrime = false ;
10+ break ;
11+ }
12+ }
13+
14+ while ( isPrime && p . length <= i ) {
15+ p . push ( i ) ;
16+ }
17+ }
18+
19+ for ( let i = nums . length - 2 ; i >= 0 ; i -- ) {
20+ if ( nums [ i ] < nums [ i + 1 ] ) continue ;
21+
22+ const [ x , next ] = [ nums [ i ] , nums [ i + 1 ] ] ;
23+ const prime = p [ x - next + 1 ] ;
24+
25+ if ( ! prime || prime >= x ) return false ;
26+ nums [ i ] -= prime ;
27+ }
28+
29+ return true ;
30+ }
You can’t perform that action at this time.
0 commit comments