免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1458 | 回复: 8

C版一道题目的SHELL解法 [复制链接]

论坛徽章:
0
发表于 2005-12-28 20:02 |显示全部楼层
原帖请见:
Q:求出2000以内的有十个以上的所有连续的非素数组,怎么求啊,谢谢
课程试验,请教

感觉蛮有意思的,C版又没有人贴CODE,所以用SHELL编了一下:




  1. #! /bin/sh                                                                                                                                
  2. function j(){
  3. p=$1;
  4. while((p++<$2-1))
  5. do
  6. echo -n $p" "
  7.   
  8. done
  9. echo " "
  10. }


  11. x=($(seq 2000 | factor |awk -F: '{if($1==$2)printf $1" "}'))
  12. k=0
  13. len=`echo ${#x[*]}`
  14. while((k++<len+1))
  15. do
  16. sub=$(echo ${x[$k+1]}-${x[$k]}|bc)
  17. if [ $sub -ge 11 ]
  18. then
  19. j ${x[$k]} ${x[$k+1]}
  20. fi

  21. done 2>&-
复制代码


HAVE FUN

[ 本帖最后由 dbcat 于 2005-12-28 20:11 编辑 ]

论坛徽章:
0
发表于 2005-12-28 22:33 |显示全部楼层
awk的:

  1. #!/bin/awk -f
  2. #
  3. #
  4. BEGIN{  flag = 0;
  5.         for( i = 1; i <= 2000; i++ )
  6.         {
  7.                 ret = isprinum( i );
  8.                 if( ret == 0 )
  9.                 {
  10.                         flag++;
  11.                         a[flag] = i;
  12.                 }
  13.                 else if( ret == 1 )
  14.                 {
  15.                         if( flag >= 10 )
  16.                         {
  17.                                 for( n = 1; n <= flag; n++ )
  18.                                         printf("%s ",a[n]);
  19.                                 print "";
  20.                         #       print "End!\n";
  21.                                 flag = 0;
  22.                         }
  23.                         if( flag < 10 )
  24.                                 flag = 0;
  25.                 }

  26.         }
  27. }

  28. function isprinum(num) {
  29.         for( j = 2; j < num ; j++ )
  30.         {
  31.                 if( num%j == 0 )
  32.                 {
  33.                         break;
  34.                 }
  35.         }
  36.         if( j >= num )
  37.                 return 1;
  38.         else
  39.                 return 0;
  40. }

复制代码


计算素数的方法,,是最笨的那种,,有很大的优化空间..:em11:

论坛徽章:
0
发表于 2005-12-28 23:13 |显示全部楼层
素数,就是质数吧,我上学的时候,称质数的。

、、、、、、、、、、、、、、、
我来一个最最简单的,
口算的、、、、、,我自己先算一遍,等下帖答案哦。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-12-29 00:07 |显示全部楼层
啥叫素数 ?

论坛徽章:
0
发表于 2005-12-29 10:46 |显示全部楼层
就是只能本身和1整除的整数

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-12-29 10:55 |显示全部楼层
原帖由 ghostwx 于 2005-12-29 10:46 发表
就是只能本身和1整除的整数

谢谢,,,

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
发表于 2005-12-29 15:08 |显示全部楼层

回复 1楼 dbcat 的帖子

/* 求质数 */
                                                                                          
#define DEBUG 0
                                                                                          
#include <ctype.h>
#include <stdio.h>
#include <sys/types.h>
                                                                                          
typedef unsigned long ulong;
typedef unsigned int uint;
typedef unsigned char uchar;
                                                                                          
#define MAXSAM 0x20
#define MAXLINE 0x100
                                                                                          
                                                                                          
char buf1[MAXLINE];
                                                                                          
FILE *fp1;
FILE *fp2;
                                                                                          
ulong llimit;
ulong hlimit;
int hex=0;
                                                                                          
                                                                                          
                                                                                          
main(ac,av)
    int ac;
    char *av[];
   {    char *si;main(ac,av)
    int ac;
    char *av[];
   {    char *si;
        char *fname;
        char *agbuf[MAXSAM];
        ulong i;
        ulong j,k;
                                                                                          
        if(ac == 1)
        {       printf("Usage:  zpkop [-x] [-lnnnn] [-hmmmm]\n");
                exit(1);
        }
        llimit = 0 ;
        hlimit = 0xffffffff;
        j = 0;
        for(i = 1; i < ac; i++)
        {       si = av[i];
                if(*si != '-')
                {       agbuf[j++] = av[i];
                }
                else
                {       switch(*(si+1))
                        {       case 'h':       /* fname borrow for xdigit */
                                        fname = *(si+2)? si+2 : av[++i];
                                        sscanf( fname,hex?"%lx":"%ld",&hlimit);
                                        break;
                                case 'l':
                                        fname = *(si+2)? si+2 : av[++i];
                                        sscanf( fname,hex?"%lx":"%ld",&llimit);
                                        break;
                                case 'x':hex=1;                                        break;
                                default:printf("parameter error!\n");
                                        exit(1);
                        }
                }
        }
        if(hlimit < llimit)
        {       printf("Invalid limit values!\n");
                exit(1);
        }
                                                                                          
        for(i=llimit;i<hlimit;i++)
        {       if((i&1)==0)  continue;
                j= i/2;
                for(k=2; k<j; k++)
                {       if((i%k)==0)  goto cont;
                }
                printf(hex?"0x%lx\n":"%ld\n",i);
        cont:;
        }
   }


                                                                        4,4          顶端

论坛徽章:
0
发表于 2005-12-29 19:02 |显示全部楼层
呵呵,语言只是工具,重要还是算法,很佩服C版的win_hate的,数学太强了

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-12-29 19:15 |显示全部楼层
原帖由 大蚂蚁 于 2005-12-29 19:02 发表
呵呵,语言只是工具,重要还是算法,很佩服C版的win_hate的,数学太强了

有空看看他脑袋瓜儿里都装的啥
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP