Waiter

  • + 1 comment

    Typescript

    function isPrime(num:number){
        if(num<2)return false;
        for(let i=2; i<=Math.sqrt(num); i++){
            if(num%i===0){
                return false;
            }
        }
            return true;
    }
    

    function waiter(number: number[], q: number): number[] {

    const primeArr = (()=>{
        let primes : number[] = [];
        let num = 2;
        while(primes.length < q){
            if(isPrime(num)){
                primes.push(num);
            }
            num++;
        }
        return primes;
    })()
    
    let rem :number[] = number;
    let ans : number[] = [];
    
    for(let i=0; i<q; i++){
    
             let temp =[];
            for(let k=0; k<rem.length; k++){
                if(rem[k]%primeArr[i]===0){
                    ans.push(rem[k]);
                }
                else {
                    temp.unshift(rem[k])
                }
            }
            rem = [...temp];
    
    }
    for(let i=rem.length-1; i>=0; i--){
        ans.push(rem[i]);
    }
    return ans;
    

    }