Composite Number Sequences
Pyth - 10 bytes
A valid answer. Uses Wilson's Theorem.
.f%h.!tZZQ
Try it online here.
Old answer
Pyth - 6 chars
Uses builtin for prime factorization, not prime checking.
.ftPZQ
Try it online here.
.f Q First n that passes filter of lambda Z, uses input for how many
t Tail. This makes all that have len-one prime factorization become empty list, and thus falsey.
P Prime factorization - primes have a len-one factorization.
Z Lambda var
Pyth, 11 bytes
<S{*M^tSQ2Q
Generates overly large list of products of all combinations of [2, n] and truncates.
TeX, 382 bytes
Because you can.
\newcount\a\newcount\b\newcount\c\newcount\n\newcount\p\newcount\q\let\v\advance\let\e\else\let\z\ifnum
\def\d#1:#2:#3:{\z#1>#2\v#1 by-#2\d#1:#2:#3:\e\z#1=#2#3=1\e#3=0\fi\fi}
\def\i#1:#2:#3:{#3=0\z#1>#2\a=#1\d\a:#2:\c:
\z\c=0\b=#2\v\b by 1\i#1:\the\b:#3:\e#1\par\fi\e#3=1\fi}
\def\l#1:#2:#3:#4:{\i\the#1:2:#4:
\z#4=0\v#2 by 1\fi\z#2<#3\v#1 by 1\l#1:#2:#3:#4:\fi}
\l\p:\n:10:\q:\end
The number in the last line is the number of composite numbers you want to have.
This is a simple divisor tester. \d
checks if #2
divides #1
. \i
calls \d
for all possible dividers (i.e. < #1
). \l
lists the first #2
numbers for which \i
returns 0.
Ungolfed (well, half-golfed) version:
\newcount\a
\newcount\b
\newcount\c
\newcount\n
\newcount\p
\newcount\q
\def\div#1:#2:#3:{%
\ifnum#1>#2 %
\advance#1 by-#2 %
\div#1:#2:#3:%
\else%
\ifnum#1=#2 %
#3=1%
\else%
#3=0%
\fi%
\fi%
}
\long\def\isprime#1:#2:#3:{%
#3=0%
\ifnum#1>#2 %
\a=#1 %
\div\a:#2:\c: %
\ifnum\c=0 %
\b=#2 %
\advance\b by 1 %
\isprime#1:\the\b:#3:%
\else
#1\par%
\fi%
\else%
#3=1%
\fi%
}
\def\listprimes#1:#2:#3:#4:{%
\isprime\the#1:2:#4: %
\ifnum#4=0 %
\advance#2 by 1 %
\fi
\ifnum#2<#3 %
\advance#1 by 1 %
\listprimes#1:#2:#3:#4: %
\fi
}
\listprimes\p:\n:11:\q:
\end