Hi Jim,
Does the stylesheet which you have posted (written
by Oliver Becker) solves the same problem? Sorry I
have'nt studied it deeply. But if yes, what input you
gave it? And what output it produced..? Or does the
stylesheet takes the input from within?
Regards,
Mukul
--- James Fuller <jim(_dot_)fuller(_at_)ruminate(_dot_)co(_dot_)uk> wrote:
u are aware of OliverB old stylesheet....
<!--
The Sieve of Eratosthenes
GPL (c) Oliver Becker, 2000-06-13
obecker(_at_)informatik(_dot_)hu-berlin(_dot_)de
-->
<xslt:transform
xmlns:xslt="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xslt:output method="text" />
<xslt:param name="bound" select="1000" />
<xslt:template match="/">
<xslt:call-template name="eratosthenes">
<xslt:with-param name="pos" select="2" />
<xslt:with-param name="array">
<xslt:call-template name="init-array">
<xslt:with-param name="length"
select="$bound" />
</xslt:call-template>
</xslt:with-param>
</xslt:call-template>
<xslt:text>
</xslt:text>
</xslt:template>
<!-- Initialize the array (string) with length
$length -->
<xslt:template name="init-array">
<xslt:param name="length" />
<xslt:if test="$length > 0">
<xslt:text>-</xslt:text>
<xslt:call-template name="init-array">
<xslt:with-param name="length"
select="$length - 1" />
</xslt:call-template>
</xslt:if>
</xslt:template>
<!-- Sieve of Eratosthenes: If the number at
position $pos isn't
marked then it's a prime (and printed). If the
position of the
prime is lower or equal then the square root of
$bound then the
new array will be computed by marking all
multiples of $pos. -->
<xslt:template name="eratosthenes">
<xslt:param name="array" />
<xslt:param name="pos" />
<xslt:if test="$pos < $bound">
<xslt:variable name="is-prime"
select="substring($array,$pos,1) =
'-'" />
<xslt:if test="$is-prime">
<xslt:value-of select="$pos" />, <xslt:text
/>
</xslt:if>
<xslt:variable name="new-array">
<xslt:choose>
<xslt:when test="$is-prime and $pos*$pos
<= $bound">
<xslt:call-template name="mark">
<xslt:with-param name="array"
select="$array" />
<xslt:with-param name="number"
select="$pos" />
</xslt:call-template>
</xslt:when>
<xslt:otherwise>
<xslt:value-of select="$array" />
</xslt:otherwise>
</xslt:choose>
</xslt:variable>
<xslt:call-template name="eratosthenes">
<xslt:with-param name="array"
select="$new-array" />
<xslt:with-param name="pos" select="$pos +
1" />
</xslt:call-template>
</xslt:if>
</xslt:template>
<!-- Mark all multiples of $number in $array with
'*' -->
<xslt:template name="mark">
<xslt:param name="array" />
<xslt:param name="number" />
<xslt:choose>
<xslt:when test="string-length($array) >
$number">
<xslt:value-of select="substring ($array,
1, $number - 1)" />
<xslt:text>*</xslt:text>
<xslt:call-template name="mark">
<xslt:with-param name="array"
select="substring ($array,
$number + 1)" />
<xslt:with-param name="number"
select="$number" />
</xslt:call-template>
</xslt:when>
<xslt:otherwise>
<xslt:value-of select="$array" />
</xslt:otherwise>
</xslt:choose>
</xslt:template>
</xslt:transform>
this will take quite a long time...though uses no
extension functions, I
would utilize other approaches to search the problem
domain if simply
contrained by the requirement of being prime and 10
digit length.
wish I had the time, though will process in the
background on a solution
to this.
cheers, Jim Fuller
--~------------------------------------------------------------------
XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
____________________________________________________
Yahoo! Sports
Rekindle the Rivalries. Sign up for Fantasy Football
http://football.fantasysports.yahoo.com
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--