<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Database Programming: Denis' Prime Number Challenge</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx</link><description>I answer Denis' challenge with another post to refrain from downloading to your mobile device.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Here's The CREATE DATABASE Script The SQLMS Generated</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458403</link><pubDate>Sat, 23 Sep 2006 12:31:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458403</guid><dc:creator>Ward Pond</dc:creator><description>CREATE DATABASE [PrimeNumberTest] ON &amp;nbsp;PRIMARY (&lt;br&gt; &amp;nbsp; &amp;nbsp;NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= N'PrimeNumberTest', &lt;br&gt; &amp;nbsp; &amp;nbsp;FILENAME &amp;nbsp; &amp;nbsp;= N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\PrimeNumberTest.mdf',&lt;br&gt; &amp;nbsp; &amp;nbsp;SIZE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 3GB,&lt;br&gt; &amp;nbsp; &amp;nbsp;MAXSIZE &amp;nbsp; &amp;nbsp; = UNLIMITED,&lt;br&gt; &amp;nbsp; &amp;nbsp;FILEGROWTH &amp;nbsp;= 1GB )&lt;br&gt; LOG ON (&lt;br&gt; &amp;nbsp; &amp;nbsp;NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= N'PrimeNumberTest_log',&lt;br&gt; &amp;nbsp; &amp;nbsp;FILENAME &amp;nbsp; &amp;nbsp;= N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\PrimeNumberTest_log.ldf',&lt;br&gt; &amp;nbsp; &amp;nbsp;SIZE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 5GB,&lt;br&gt; &amp;nbsp; &amp;nbsp;MAXSIZE &amp;nbsp; &amp;nbsp; = 2048GB,&lt;br&gt; &amp;nbsp; &amp;nbsp;FILEGROWTH &amp;nbsp;= 1GB )&lt;br&gt;GO&lt;br&gt;EXEC dbo.sp_dbcmptlevel @dbname=N'PrimeNumberTest', @new_cmptlevel=90&lt;br&gt;GO&lt;br&gt;IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))&lt;br&gt;BEGIN&lt;br&gt; &amp;nbsp; &amp;nbsp;EXEC [PrimeNumberTest].[dbo].[sp_fulltext_database] @action = 'disable'&lt;br&gt;END&lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET ANSI_NULL_DEFAULT OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET ANSI_NULLS OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET ANSI_PADDING OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET ANSI_WARNINGS OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET ARITHABORT OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET AUTO_CLOSE OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET AUTO_CREATE_STATISTICS ON &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET AUTO_SHRINK OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET AUTO_UPDATE_STATISTICS ON &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET CURSOR_CLOSE_ON_COMMIT OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET CURSOR_DEFAULT &amp;nbsp;GLOBAL &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET CONCAT_NULL_YIELDS_NULL OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET NUMERIC_ROUNDABORT OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET QUOTED_IDENTIFIER OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET RECURSIVE_TRIGGERS OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET &amp;nbsp;ENABLE_BROKER &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET AUTO_UPDATE_STATISTICS_ASYNC OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET DATE_CORRELATION_OPTIMIZATION OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET TRUSTWORTHY OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET ALLOW_SNAPSHOT_ISOLATION OFF &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET PARAMETERIZATION SIMPLE &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET &amp;nbsp;READ_WRITE &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET RECOVERY FULL &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET &amp;nbsp;MULTI_USER &lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET PAGE_VERIFY CHECKSUM &amp;nbsp;&lt;br&gt;GO&lt;br&gt;ALTER DATABASE [PrimeNumberTest] SET DB_CHAINING OFF&lt;br&gt;GO&lt;br&gt;</description></item><item><title>re: Database Programming: Denis' Prime Number Challenge</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458412</link><pubDate>Sat, 23 Sep 2006 13:36:13 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458412</guid><dc:creator>Denis the SQL Menace</dc:creator><description>Well here is a Sieve of Eratosthenes version, runs in 6 seconds on 2nd run, first run will be around 16 seconds on my laptop (SQL 2000)
&lt;br&gt;
&lt;br&gt;SET NOCOUNT ON
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;DECLARE @i INT
&lt;br&gt;
&lt;br&gt;-- Create a 10-digit table
&lt;br&gt;DECLARE @D TABLE (N INT)
&lt;br&gt;INSERT INTO @D (N)
&lt;br&gt;SELECT 0 UNION ALL
&lt;br&gt;SELECT 1 UNION ALL
&lt;br&gt;SELECT 2 UNION ALL
&lt;br&gt;SELECT 3 UNION ALL
&lt;br&gt;SELECT 4
&lt;br&gt;
&lt;br&gt;INSERT INTO @D (N)
&lt;br&gt;SELECT N+5 FROM @D
&lt;br&gt;
&lt;br&gt;-- build a small sieve table between 2 and 1000
&lt;br&gt;DECLARE @T TABLE (N INT)
&lt;br&gt;INSERT INTO @T( N )
&lt;br&gt;SELECT 1+A.N+10*(B.N+10*C.N)
&lt;br&gt;FROM @D A, @D B, @D C
&lt;br&gt;
&lt;br&gt;DELETE FROM @T WHERE N = 1
&lt;br&gt;
&lt;br&gt;SET @I = 2
&lt;br&gt;WHILE @I &amp;lt;= SQRT(1000) BEGIN &amp;nbsp; &amp;nbsp; DELETE FROM @T WHERE N % @I = 0 AND N &amp;gt; @I
&lt;br&gt; &amp;nbsp; &amp;nbsp;SET @I = @I + 1
&lt;br&gt;END
&lt;br&gt;
&lt;br&gt;-- Create large table between 1001 and 1000000
&lt;br&gt;SELECT A+10*(B+10*(C+10*(D+10*(E+ 10*F)))) AS N
&lt;br&gt;INTO #P
&lt;br&gt;FROM
&lt;br&gt;( &amp;nbsp; &amp;nbsp;SELECT A.N AS A, B.N AS B, C.N AS C, D.N AS D, E.N AS E, F.N AS F
&lt;br&gt; &amp;nbsp; &amp;nbsp;FROM @D A, @D B, @D C, @D D, @D E, @D F
&lt;br&gt; &amp;nbsp; &amp;nbsp;WHERE A.N in (1, 3, 7, 9) &amp;nbsp;-- Not divisible by 2 or 5
&lt;br&gt;) bNum
&lt;br&gt;WHERE (A+B+C+D+E+F) % 3 &amp;lt;&amp;gt; 0 -- Or 3
&lt;br&gt; &amp;nbsp; &amp;nbsp;AND (A+3*B+2*C-D-3*E-2*F) % 7 &amp;lt;&amp;gt; 0 -- Or 7
&lt;br&gt; &amp;nbsp; &amp;nbsp;AND (B-A+D-C+F-E) % 11 &amp;lt;&amp;gt; 0 -- Or 11
&lt;br&gt; &amp;nbsp; &amp;nbsp;and D|E|F &amp;lt;&amp;gt; 0 -- Don't include the first 1000 numbers,
&lt;br&gt;--we already have these in the small sieve table
&lt;br&gt;UNION ALL SELECT 1000000
&lt;br&gt;
&lt;br&gt;-- sieve the big table with smaller one
&lt;br&gt;SELECT @I = 2
&lt;br&gt;WHILE @I IS NOT NULL
&lt;br&gt;BEGIN
&lt;br&gt; &amp;nbsp; &amp;nbsp;DELETE FROM #P WHERE N% @I = 0
&lt;br&gt; &amp;nbsp; &amp;nbsp;SELECT @I = MIN(N) FROM @T WHERE N &amp;gt; @I
&lt;br&gt;END
&lt;br&gt;
&lt;br&gt;-- add primes up to 1000
&lt;br&gt;INSERT INTO #P SELECT N FROM @T
&lt;br&gt;
&lt;br&gt;-- Here are the results
&lt;br&gt;--78498 rows
&lt;br&gt;SELECT &amp;nbsp;* FROM #P ORDER BY 1
&lt;br&gt;
&lt;br&gt;drop table #P
&lt;br&gt;go</description></item><item><title>The prime number challenge – great waste of time!</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458525</link><pubDate>Sun, 24 Sep 2006 01:56:04 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458525</guid><dc:creator>SELECT Hints, Tips, Tricks FROM Hugo Kornelis WHERE RDBMS = 'SQL Server'</dc:creator><description>No sane person would even consider using SQL Server to construct a list of prime numbers. So just to...</description></item><item><title>re: Database Programming: Denis' Prime Number Challenge</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458535</link><pubDate>Sun, 24 Sep 2006 03:19:49 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458535</guid><dc:creator>Denis The SQL Menace</dc:creator><description>Let me know how many seconds this one takes?
&lt;br&gt;
&lt;br&gt;SET NOCOUNT ON
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;DECLARE @i INT
&lt;br&gt;
&lt;br&gt;-- Create a 10-digit table
&lt;br&gt;DECLARE @D TABLE (N INT)
&lt;br&gt;INSERT INTO @D (N)
&lt;br&gt;SELECT 0 UNION ALL
&lt;br&gt;SELECT 1 UNION ALL
&lt;br&gt;SELECT 2 UNION ALL
&lt;br&gt;SELECT 3 UNION ALL
&lt;br&gt;SELECT 4
&lt;br&gt;
&lt;br&gt;INSERT INTO @D (N)
&lt;br&gt;SELECT N+5 FROM @D
&lt;br&gt;
&lt;br&gt;-- build a small sieve table between 2 and 1000
&lt;br&gt;DECLARE @T TABLE (N INT)
&lt;br&gt;INSERT INTO @T( N )
&lt;br&gt;SELECT 1+A.N+10*(B.N+10*C.N)
&lt;br&gt;FROM @D A, @D B, @D C
&lt;br&gt;
&lt;br&gt;DELETE FROM @T WHERE N = 1
&lt;br&gt;
&lt;br&gt;SET @I = 2
&lt;br&gt;WHILE @I &amp;lt;= SQRT(1000) BEGIN &amp;nbsp; &amp;nbsp; DELETE FROM @T WHERE N % @I = 0 AND N &amp;gt; @I
&lt;br&gt; &amp;nbsp; &amp;nbsp;SET @I = @I + 1
&lt;br&gt;END
&lt;br&gt;
&lt;br&gt;-- Create large table between 1001 and 1000000
&lt;br&gt;SELECT A+10*(B+10*(C+10*(D+10*(E+ 10*F)))) AS N
&lt;br&gt;INTO #P
&lt;br&gt;FROM
&lt;br&gt;( &amp;nbsp; &amp;nbsp;SELECT A.N AS A, B.N AS B, C.N AS C, D.N AS D, E.N AS E, F.N AS F
&lt;br&gt; &amp;nbsp; &amp;nbsp;FROM @D A, @D B, @D C, @D D, @D E, @D F
&lt;br&gt; &amp;nbsp; &amp;nbsp;WHERE A.N in (1, 3, 7, 9) &amp;nbsp;-- Not divisible by 2 or 5
&lt;br&gt;) blah
&lt;br&gt;WHERE (A+B+C+D+E+F) % 3 &amp;lt;&amp;gt; 0 -- Or 3
&lt;br&gt; &amp;nbsp; &amp;nbsp;AND (A+3*B+2*C-D-3*E-2*F) % 7 &amp;lt;&amp;gt; 0 -- Or 7
&lt;br&gt; &amp;nbsp; &amp;nbsp;AND (B-A+D-C+F-E) % 11 &amp;lt;&amp;gt; 0 -- Or 11
&lt;br&gt; &amp;nbsp; &amp;nbsp;AND D|E|F &amp;lt;&amp;gt; 0 -- Don't include the first 1000 numbers,
&lt;br&gt;--we already have these in the small sieve table
&lt;br&gt;UNION ALL SELECT 1000000
&lt;br&gt;
&lt;br&gt;-- sieve the big table with smaller one
&lt;br&gt;SELECT @I = 2
&lt;br&gt;WHILE @I IS NOT NULL
&lt;br&gt;BEGIN
&lt;br&gt; &amp;nbsp; &amp;nbsp;DELETE FROM #P WHERE N% @I = 0
&lt;br&gt; &amp;nbsp; &amp;nbsp;SELECT @I = MIN(N) FROM @T WHERE N &amp;gt; @I
&lt;br&gt;END
&lt;br&gt;
&lt;br&gt;-- add primes up to 1000
&lt;br&gt;INSERT INTO #P SELECT N FROM @T
&lt;br&gt;
&lt;br&gt;-- Here are the results
&lt;br&gt;--78498 rows
&lt;br&gt;SELECT &amp;nbsp;* FROM #P ORDER BY 1
&lt;br&gt;
&lt;br&gt;drop table #P
&lt;br&gt;go
&lt;br&gt;</description></item><item><title>Database Programming: Denis' Prime Number Challenge: A New Leader</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458592</link><pubDate>Sun, 24 Sep 2006 10:01:02 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458592</guid><dc:creator>Ward Pond's SQL Server blog</dc:creator><description>Well, folks, there's a new sheriff in town..&amp;amp;amp;nbsp; this is a continuation of a conversation here and...</description></item><item><title>Database Programming: Sunday Night Prime Number Update</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458747</link><pubDate>Mon, 25 Sep 2006 05:19:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458747</guid><dc:creator>Ward Pond's SQL Server blog</dc:creator><description>Our blogging site is going to go dark in an hour or so for a software upgrade, so I won't be able to...</description></item><item><title>Database Programming: Closing The Door On The &amp;amp;quot;Discredited&amp;amp;quot; Prime Number Tangent</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#458962</link><pubDate>Tue, 26 Sep 2006 03:08:16 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:458962</guid><dc:creator>Ward Pond's SQL Server blog</dc:creator><description>One more PDA-incompatible post: lessons learned from &amp;amp;quot;discredited&amp;amp;quot; prime number syntax</description></item><item><title>Database Programming: A Prime Number Contender From Down Under</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#460099</link><pubDate>Sat, 30 Sep 2006 11:55:01 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:460099</guid><dc:creator>Ward Pond's SQL Server blog</dc:creator><description>Denis' Prime Number Challenge just won't die.&amp;amp;amp;nbsp; I think this topic has spurred more dialog than any&amp;amp;amp;nbsp;other...</description></item><item><title>Database Programming: Closing The Door On The "Discredited" Prime Number Tangent</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#466599</link><pubDate>Wed, 11 Oct 2006 08:20:25 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:466599</guid><dc:creator>Ward Pond's SQL Server blog</dc:creator><description>&lt;p&gt;One more PDA-incompatible post: lessons learned from &amp;quot;discredited&amp;quot; prime number syntax&lt;/p&gt;
</description></item><item><title>A "Kobiyashi Maru" On The Prime Number Front?</title><link>http://blogs.technet.com/wardpond/archive/2006/09/23/database-programming-denis-prime-number-challenge.aspx#470703</link><pubDate>Tue, 17 Oct 2006 03:41:41 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:470703</guid><dc:creator>Ward Pond's SQL Server blog</dc:creator><description>&lt;p&gt;No less a figure than Louis Davidson has weighed in on the Prime Number Challenge . I left a comment&lt;/p&gt;
</description></item></channel></rss>