Labels

CSOM (1) JavaScript (1) SharePoint (1)

Monday, February 27, 2017

SQL prime number

This is a solution for www.hackerrank.com
problem

Write a query to print all prime numbers less than or equal to . Print your result on a single line, and use the ampersand () character as your separator (instead of a space).
For example, the output for all prime numbers  would be:
2&3&5&7



declare @primes as varchar(max);
;
with strip as(
select  * from (values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) as X(n)  --tens
),
seed as(
select ROW_NUMBER() over(order by (select null)) as n from strip as A
cross join strip as B
cross join strip as C
)
,cte_prime as(
select cte_numerator.as n1,cte_denominator.as n2,  
(case cte_numerator.% cte_denominator.when 0 then 0 else 1 end) as mod  --1 if has remainder, 0 if its divisable
from seed as cte_numerator 
inner join seed as cte_denominator on cte_numerator.> cte_denominator.n
)
 
,
res as(
select n from seed
where 1= ALL(select mod from cte_prime where n1=seed.and n2<>1  ) --always has remainder!!
and seed.> 1
)
SELECT @Primes = COALESCE(@Primes +'&','') +CAST(as varchar(3)) from res
print @primes

No comments:

Post a Comment