Changeset f30fdc in git


Ignore:
Timestamp:
Oct 10, 2008, 2:59:23 PM (15 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
Children:
36e34686a0b133e6f1ebe6746a9e6ece43a48cf7
Parents:
280403a149a82e02268142c8f416c7edebb4da92
Message:
*hannes: IsPrime(MININT)


git-svn-id: file:///usr/local/Singular/svn/trunk@11122 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipshell.cc

    r280403 rf30fdc  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipshell.cc,v 1.194 2008-10-10 10:18:13 Singular Exp $ */
     4/* $Id: ipshell.cc,v 1.195 2008-10-10 12:59:22 Singular Exp $ */
    55/*
    66* ABSTRACT:
     
    570570}
    571571
    572 int IsPrime(int p)  /* brute force !!!! */
    573 {
    574   int i,j;
    575   if      (p == 0)    return 0;
    576   else if (p == 1)    return 1/*1*/;
    577   else if (p == 2)    return p;
    578   else if (p < 0)     return (-IsPrime(-p));
    579   else if (!(p & 1)) return IsPrime(p-1);
     572int iiIsPrime0(unsigned p)  /* brute force !!!! */
     573{
     574  unsigned i,j;
    580575#ifdef HAVE_FACTORY
    581   else if (p<=32749) // max. small prime in factory
     576  if (p<=32749) // max. small prime in factory
    582577  {
    583578    int a=0;
     
    596591#endif
    597592#ifdef HAVE_FACTORY
    598   int end_i=cf_getNumSmallPrimes()-1;
     593  unsigned end_i=cf_getNumSmallPrimes()-1;
    599594#else
    600   int end_i=p/2;
     595  unsigned end_i=p/2;
    601596#endif
    602   int end_p=(int)sqrt((double)p);
     597  unsigned end_p=(unsigned)sqrt((double)p);
    603598restart:
    604599  for (i=0; i<end_i; i++)
     
    613608    {
    614609    #ifdef HAVE_FACTORY
    615       if (p<=32751) return IsPrime(p-2);
     610      if (p<=32751) return iiIsPrime0(p-2);
    616611    #endif
    617612      p-=2;
     
    621616  }
    622617  return p;
     618}
     619int IsPrime(int p)  /* brute force !!!! */
     620{
     621  int i,j;
     622  if      (p == 0)    return 0;
     623  else if (p == 1)    return 1/*1*/;
     624  else if ((p == 2)||(p==3))    return p;
     625  else if (p < 0)     return (iiIsPrime0((unsigned)(-p)));
     626  else if ((p & 1)==0) return iiIsPrime0((unsigned)(p-1));
     627  return iiIsPrime0((unsigned)(p));
    623628}
    624629
  • Singular/singular-libs

    r280403 rf30fdc  
    1111        finvar.lib   gmspoly.lib   gmssing.lib   general.lib   graphics.lib \
    1212        grwalk.lib   groups.lib    hnoether.lib  homolog.lib   hyperel.lib \
    13         inout.lib    intprog.lib   jacobbson.lib kskernel.lib  latex.lib \
     13        inout.lib    intprog.lib   jacobson.lib kskernel.lib  latex.lib \
    1414        linalg.lib   lll.lib       makedbm.lib   matrix.lib \
    1515        modstd.lib   mondromy.lib  mprimdec.lib  mregular.lib  rootsmr.lib \
Note: See TracChangeset for help on using the changeset viewer.