您的位置:程序门 -> c/c++ ->



有一周没发贴了 积累了好多分 散下分


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


有一周没发贴了 积累了好多分 散下分[已结贴,结贴人:makewater]
发表于:2007-08-23 09:06:07 楼主
顺便请教一下   判断一个数是不是素数   还有别的方法吗?这个是我的方法:
#include <stdio.h>
main()
{
          int   a,i;
          printf( "please   input   one   number:\n ");
          scanf( "%d ",&a);
          for(i=2;i <a;i++)
          {
                if(a%i==0)
              {
                      printf( "a不是素数 ");
                      return;
              }


          }
          printf( "a是素数 ");

}
发表于:2007-08-23 09:07:071楼 得分:4
顶   sf~   :)
发表于:2007-08-23 09:07:182楼 得分:0
哇   1楼
发表于:2007-08-23 09:07:233楼 得分:4
#include <stdio.h>
main()
{
          int   a,i,b;
          printf( "please   input   one   number:\n ");
          scanf( "%d ",&a);
b   =   sqrt(a)+1;
          for(i=2;i <b;i++)
          {
                if(a%i==0)
              {
                      printf( "a不是素数 ");
                      return;
              }


          }
          printf( "a是素数 ");

}
发表于:2007-08-23 09:07:414楼 得分:0
再#include   <math.h>
发表于:2007-08-23 09:09:565楼 得分:3
算法很多吧,具体不晓得,
程序里可以用循环或递归
发表于:2007-08-23 09:10:406楼 得分:0
如果不让   用return   该怎么办哦?
发表于:2007-08-23 09:11:127楼 得分:2
换break;
发表于:2007-08-23 09:11:288楼 得分:2
我是来接分的
发表于:2007-08-23 09:11:509楼 得分:2
找本书看看
发表于:2007-08-23 09:12:0910楼 得分:2
如果数比较多,大的话,可以用非素数判断法
发表于:2007-08-23 09:13:4311楼 得分:2
没return的:
void   main(       )      
    {      
            int       i,m,n;                                      
            int       flag=0;      
            m=n/2+1;                              
            for(i=2;i <m;i++)      
            {      
                    if(n%i==0)                       /*对m内的数取余看是否为0*/          
                    {      
                            flag=1;                           /*不是素数将标志置1*/      
                            break;                               /*跳出循环*/      
                    }      
            }              
            if(flag==1)      
            {      
                    printf( "n       isn 't       素数 ");      
            }              
            printf( "n       is       素数 ");
//ps:from     google
发表于:2007-08-23 09:15:0912楼 得分:0
m=n/2+1;       楼上kenmark大侠的   b   =   sqrt(a)+1;(m=sqrt(n)+1)更好。
发表于:2007-08-23 09:15:0913楼 得分:2
接分!!
发表于:2007-08-23 09:15:5914楼 得分:2
当然要加#include <math.h>
发表于:2007-08-23 09:16:4515楼 得分:0
恩   受教了   !
发表于:2007-08-23 09:20:5816楼 得分:2
接分
发表于:2007-08-23 09:21:2317楼 得分:2
楼主程序一直循环到最后..   效率太低了
发表于:2007-08-23 09:22:1518楼 得分:2
呵呵~~
发表于:2007-08-23 09:34:4019楼 得分:2
学习了
发表于:2007-08-23 10:17:5620楼 得分:2
接分
发表于:2007-08-23 10:36:3721楼 得分:2
jiefen
发表于:2007-08-23 10:58:4022楼 得分:2
jf
发表于:2007-08-23 11:08:0723楼 得分:2
接个分!!
发表于:2007-08-23 11:08:0824楼 得分:2
做表     然后计算撒
计算n/2   的所有黹数
发表于:2007-08-23 11:08:4525楼 得分:2
如果要判断的数小的话,可以先做个素数表。
如果是很大的数的话,就不用这样一个一个的试了,不过有判断错误的概率
发表于:2007-08-23 11:15:1226楼 得分:4
#include <stdio.h>              
    #include <stdlib.h> //需要包含的头文件      
    /*      
    #define           max           1000              
    main()              
    {int           i,n,k,m;              
        int           s[max];                                                                                                   /*定义筛子*/              
        printf( "please           input           the           n: ");              
        scanf( "%d ",&n);                                                                   /*最大范围*/              
        if           (n> 1){              
                                for(i=2;i <=n;i++)              
                                                                s[i]=1;                                                                                                   /*筛子初始化*/              
                                m=2;              
                                while(m <=n){              
                                                        if           (s[m]==1){                                                   /*判定最小数为素数*/              
                                                                                printf( "%d\t ",m);              
                                                                                k=m;              
                                                                                while(k <=n){                                           /*移走素数的倍数*/              
                                                                                                s[k]=0;              
                                                                                                k=k+m;              
                                                                                }              
                                                        }              
                                                        m++;              
                                }              
        }       */      
        system( "pause ");       //暂停语句      
    }
发表于:2007-08-23 11:16:1027楼 得分:2
接分!!!
发表于:2007-08-23 11:31:3328楼 得分:2
本来想说点的,楼上已经很全了,就接下分好了
发表于:2007-08-23 11:32:0929楼 得分:2
接分
发表于:2007-08-23 11:42:4430楼 得分:2
以爲是白送分滴~~~~~~
发表于:2007-08-23 12:18:4131楼 得分:2
sf
发表于:2007-08-23 12:39:4832楼 得分:2
接分
发表于:2007-08-23 13:20:4633楼 得分:0
本来想说点的,楼上已经很全了,就接下分好了
发表于:2007-08-23 13:31:4334楼 得分:2
接分,sf
发表于:2007-08-23 13:44:3435楼 得分:0
发表于:2007-08-23 13:47:0936楼 得分:2
jf,sf
发表于:2007-08-23 13:54:3037楼 得分:2
学习了
发表于:2007-08-23 14:18:5938楼 得分:2
这样做执行效率有点低,你直接对要判断的数开根号,然后从0到这个开根号后的数进行循环,效率就高许多了,具体判断方法是一样的,就用你的那部分程序就可以了,稍微改下就可以了.
发表于:2007-08-23 15:10:4539楼 得分:3
其实还可以提高效率的,
只要与2,3,5,7,9,11……   也就是与   2和奇数比较   即可,可以效率加倍
发表于:2007-08-23 16:27:3340楼 得分:4
对kenmark(fenix)的方法提个问题

函数sqrt()定义   double   sqrt(double   x);   要求输入参数和输出值都为double

可是接下来的“%”运算要求操作数是整数

这种数据的隐含转换会因为开发环境不同效果不同的,在vc下运行我测了没有问题,在linux下编译过不去。


发表于:2007-08-23 17:05:2841楼 得分:2
小于一定范围的素数全部列举出来。
发表于:2007-08-23 17:36:4442楼 得分:2
大家比对的时候好像都没有注意2是素数的哦,要先提出来个别对待了!
发表于:2007-08-23 17:39:4543楼 得分:4
jf
发表于:2007-08-23 20:04:4644楼 得分:2
什么是树树啊
发表于:2007-08-23 20:52:3045楼 得分:2
接分
发表于:2007-08-23 20:55:3046楼 得分:3
灌水接分
发表于:2007-08-23 21:52:2247楼 得分:2
接分了
发表于:2007-08-23 22:06:0548楼 得分:2
ding
发表于:2007-08-23 22:17:2149楼 得分:2
需要考虑2也是一个素数的
发表于:2007-08-24 00:16:3550楼 得分:3


jie


快速检索

最新资讯
热门点击