找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21125|回复: 6

数学计算工具 i 的重构版new i

[复制链接]
发表于 2017-2-23 20:56:13 | 显示全部楼层 |阅读模式
NEW I.EXE  版本1.0

摘要:
=============================================================================
数学计算工具I.EXE的重构版,更换了新的内核和计算核心,改用自主研发的静逆波兰
解析器,多处if改用case实现,抛弃低端的strcmp函数, 重写了程序主体架构,完善
了之前不安全的代码。采用双引擎素数筛法,可以快捷获取一万亿以内的素数。
new i 工具的用法与旧 i 已经不同,旧版本宣布作废,今后将只对new i 做升级维护。
=============================================================================

下载链接: https://pan.baidu.com/s/1tPFRm3Mck7XYBXWME2pD4w?pwd=9w8g

用法:(开关支持近似输入法,比如 i /get-permutation 可以直接输入成 i /get-pe )
-----------------------------------------------------------------------------
  i [options] {arguments}...
-----------------------------------------------------------------------------
    /help Show help information

    /get-fib  [n]
    /get-fact [n]
    /get-pi   [Accuracy]
    /get-e    [Accuracy]
    /get-combination [m] [n]
    /get-permutation [m] [n]
    /get-datedifference [start_day] [end_day]
    /get-hash [string]
    /get-result [expression]
    /get-statistics [arrays]
    /get-solution [coefficients]
    /get-elements
    /get-mytax [principal] [interest rate] [number of compound interest]
    /get-interest [annuity] [interest rate] [interest rate period]
    /get-annuity [income] [three insurance a gold]

    /pri-list  [m] [n]
    /pri-count [max]
    /pri-index [m] [n]
    /pri-check [prime]
    /pri-sum   [max]
-----------------------------------------------------------------------------

示例:
-----------------------------------------------------------------------------
REM 计算字符串哈希值
i /get-hash "i"
Crc32 : e66c3671
Md5   : 865c0c0b4ab0e063e5caa3387c1a8741
Sha1  : 042dc4512fa3d391c5170cf3aa61e6a638f84342
Sha256: de7d1b721a1e0632b7cf04edf5032c8ecffa9f9a08492152b926f1a5a7e765d7
-----------------------------------------------------------------------------
REM 计算组合数 C(33,6)
i /get-comb 33 6
=1107568
-----------------------------------------------------------------------------
REM 计算排列数 P(33,6)
i /get-perm 33 3
=32736
-----------------------------------------------------------------------------
REM 科学计算  5*(arctan(cos(sin(ln(lg(2.71828))))))
i /get-result 5*(arctan(cos(sin(ln(lg(2.71828))))))
=3.178987410777
-----------------------------------------------------------------------------
REM 素数切片
i /pri-list 100000000 100000500
┌────────────────────────┐
100000007 100000037 100000039 100000049 100000073
100000081 100000123 100000127 100000193 100000213
100000217 100000223 100000231 100000237 100000259
100000267 100000279 100000357 100000379 100000393
100000399 100000421 100000429 100000463 100000469
100000471 100000493
└────────────────────────┘
-----------------------------------------------------------------------------
REM 第一千万个素数
i /pri-index 10000000
=179424673
-----------------------------------------------------------------------------
REM 素性检测
i /pri-check 100000357
100000357 是素数
-----------------------------------------------------------------------------
REM 计算30亿内的素数和
i /pri-sum 3000000000
=211169315361937456
-----------------------------------------------------------------------------
REM 统计300亿内的素数个数
i /pri-count 30000000000
在30000000000以内共有1300005926个素数
-----------------------------------------------------------------------------
RME 解高次方程
i /get-solu 3 0 5 -6 -9
一元四次方程3x^4+0x^3+5x^2-6x-9=0的解为:
┌────────────────────────┐
  共轭复根:-0.252438186547+1.696390660707i
            -0.252438186547-1.696390660707i
  实数解为: 1.293411063722
            -0.788534690627
└────────────────────────┘
-----------------------------------------------------------------------------
RME 计算日期差
i /get-dat 19951207 20170223
=7749
-----------------------------------------------------------------------------
REM 其他功能请自行体验,不再详叙。
-----------------------------------------------------------------------------

备注:
-----------------------------------------------------------------------------
常数类
        pi    3.1415926535897932
        e     2.7182818284590452       

通用类
        rand  随机数
        round 四舍五入
        int   取整
        ceil  向上舍入
        floor 向下舍入
        abs   绝对值
        sqrt  开方
        lg    常用对数,以10为底
        ln    自然对数
        exp   e的次幂
        gamma 伽玛函数
        torad 度转弧度
        +     加
        -     减
        *     乘
        /     除
        %     取余数
        ^     次方
        !     阶乘

三角函数类
        sin、cos、tan   
        arcsin、arccos、arctan

双曲函数类
        sinh、cosh、tanh
        arcsinh、arccosh、arctanh
-----------------------------------------------------------------------------

英译:
-----------------------------------------------------------------------------
CONSOLE CALCULATE TOOL, COPYRIGHT@2017~2019 BY HAPPY, VERSION 1.0
-----------------------------------------------------------------------------
  i [options] {arguments}...
-----------------------------------------------------------------------------
    /help Show help information

    /get-fib  [n]
    /get-fact [n]
    /get-pi   [Accuracy]
    /get-e    [Accuracy]
    /get-combination [m] [n]
    /get-permutation [m] [n]
    /get-datedifference [start_day] [end_day]
    /get-hash [string]
    /get-result [expression]
    /get-statistics [arrays]
    /get-solution [coefficients]
    /get-elements
    /get-mytax [principal] [interest rate] [number of compound interest]
    /get-interest [annuity] [interest rate] [interest rate period]
    /get-annuity [income] [three insurance a gold]

    /pri-list  [m] [n]
    /pri-count [max]
    /pri-index [m] [n]
    /pri-check [prime]
    /pri-sum   [max]
-----------------------------------------------------------------------------
2017-02-23


核心源码:
  1. /*
  2.         CONSOLE CALCULATE TOOL, COPYRIGHT@2017~2019 BY HAPPY, VERSION 1.0
  3.         THE NEW I.EXE
  4.         LIN: EQUATION.LIB  HASH.LIB  REVPOLISH.LIB SMALLFUN.LIB PRIME.LIB
  5. */

  6. #include    <math.h>
  7. #include   <stdio.h>
  8. #include <stdbool.h>
  9. #include  <stdlib.h>
  10. #include  <string.h>

  11. //定义帮助说明//////////////////////////////////////////////////////
  12. #define HELP_INFORMATION "\
  13. CONSOLE CACLUTE TOOL, COPYRIGHT@2017~2018 BY HAPPY, VERSION 1.0  \n\
  14. -----------------------------------------------------------------\n\
  15.   i [option] {parameters}\n\
  16. -----------------------------------------------------------------\n\
  17.     /get-fib  [n]\n\
  18.     /get-fact [n]\n\
  19.     /get-pi   [Accuracy]\n\
  20.     /get-e    [Accuracy]\n\
  21.     /get-combination [m] [n]\n\
  22.     /get-permutation [m] [n]\n\
  23.     /get-datedifference [start_day] [end_day]\n\
  24.     /get-hash [string]\n\
  25.     /get-result [expression]\n\
  26.     /get-statistics [arrays]\n\
  27.     /get-solution [coefficients]\n\
  28.     /get-elements\n\
  29.     /get-mytax [principal] [interest rate] [number of compound interest]\n\
  30.     /get-interest [annuity] [interest rate] [interest rate period]\n\
  31.     /get-annuity [income] [three insurance a gold]\n\
  32. \n\
  33.     /pri-list  [m] [n]\n\
  34.     /pri-count [max]\n\
  35.     /pri-index [m] [n]\n\
  36.     /pri-check [prime]\n\
  37.     /pri-sum   [max]\n\
  38. -----------------------------------------------------------------\n\
  39. 02-23-2017\n"
  40. ////////////////////////////////////////////////////////////////////
  41. #define CHEMICAL_ELEMENTS "------Chemical_elements------\n\
  42.     ⅠA                                                                                                     0   \n\
  43.   ┌──┐                                                                                              ┌──┐\n\
  44.   │1 H│                                                                                              │2 He│\n\
  45. 1│ 氢 │                                                                                              │ 氦 │\n\
  46.   │1.01│ ⅡA                                                               ⅢA   ⅣA   ⅤA   ⅥA   ⅦA│4.00│\n\
  47.   ├──┼──┐                                                          ┌──┬──┬──┬──┬──┼──┤\n\
  48.   │3 Li│4 Be│                                                          │5  B│6  C│7  N│8  O│9  F│10Ne│\n\
  49. 2│ 锂 │ 铍 │                                                          │ 硼 │ 碳 │ 氮 │ 氧 │ 氟 │ 氖 │\n\
  50.   │6.94│9.01│                                                          │10.8│12.0│14.0│16.0│19.0│20.2│\n\
  51.   ├──┼──┤                                                          ├──┼──┼──┼──┼──┼──┤\n\
  52.   │11Li│12Be│                                                          │13Al│14Si│15 P│16 S│17Cl│18Ar│\n\
  53. 3│ 钠 │ 镁 │                                                          │ 铝 │ 硅 │ 磷 │ 硫 │ 氯 │ 氩 │\n\
  54.   │23.0│24.3│ ⅢB   ⅣB   ⅤB   ⅥB   ⅦB         Ⅷ         ⅠB   ⅡB │27.0│28.1│31.0│32.1│35.5│40.0│\n\
  55.   ├──┼──┼──┬──┬──┬──┬──┬──┬──┬──┬──┬──┼──┼──┼──┼──┼──┼──┤\n\
  56.   │19 K│20Ca│21Sc│22Ti│23 V│24Cr│25Mn│26Fe│27Co│28Ni│29Cu│30Zn│31Ga│32Ge│33As│34Se│35Br│36Kr│\n\
  57. 4│ 钾 │ 钙 │ 钪 │ 钛 │ 钒 │ 铬 │ 锰 │ 铁 │ 钴 │ 镍 │ 铜 │ 锌 │ 镓 │ 锗 │ 砷 │ 硒 │ 溴 │ 氪 │\n\
  58.   │39.1│40.1│45.0│47.8│51.0│52.0│54.9│55.9│58.9│58.7│63.6│65.4│69.8│72.6│74.9│79.0│79.9│83.8│\n\
  59.   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤\n\
  60.   │37Rb│38Sr│39 Y│40Zr│41Nb│42Mo│43Tc│44Ru│45Rh│46Pd│47Ag│48Cd│49In│50Sn│51Sb│52Te│53 I│54Xe│\n\
  61. 5│ 铷 │ 锶 │ 钇 │ 锆 │ 铌 │ 钼 │ 锝 │ 钌 │ 铑 │ 钯 │ 银 │ 镉 │ 铟 │ 锡 │ 锑 │ 碲 │ 碘 │ 氙 │\n\
  62.   │85.5│87.6│88.9│91.2│92.9│95.9│[99]│101.│103.│106.│108.│112.│115.│119.│122.│128.│127.│131.│\n\
  63.   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤\n\
  64.   │55Cs│56Ba│57- │72Hf│73Ta│74 W│75Re│76Os│77Ir│78Pt│79Au│80Hg│81Tl│82Pb│83Bi│84Po│85At│86Rn│\n\
  65. 6│ 铯 │ 钡 │  71│ 铪 │ 钽 │ 钨 │ 铼 │ 锇 │ 铱 │ 铂 │ 金 │ 汞 │ 铊 │ 铅 │ 铋 │ 钋 │ 砹 │ 氡 │\n\
  66.   │133.│137.│镧系│179.│181.│184.│186.│190.│192.│195.│197.│201.│204.│207.│209.│209*│210*│222*│\n\
  67.   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤\n\
  68.   │87Fr│88Ra│89- │104Rf 105Db 106Sg 107Bh 108Hs 109Mt 110Ds 111Rg 112Cn 113 │114 │115 │116 │117 │118 │\n\
  69. 7│ 钫 │ 镭 │ 103│钅卢│钅杜│钅喜│钅波│钅黑│钅麦│钅达│钅仑│ 鎶 │ Uut│ Fl │ Uup│ Lv │ Uus│ Uuo│\n\
  70.   │223*│226.│锕系│265*│268*│271*│270*│277*│276*│281*│280*│285*│284*│289*│289*│283*│294*│294*│\n\
  71.   └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘\n\
  72. \n\
  73.   ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐\n\
  74. 镧│57La│58Ce│59Pr│60Nd│61Pm│62Sm│63Eu│64Gd│65Tb│66Dy│67Ho│68Er│69Tm│70Yb│71Lu│\n\
  75. 系│ 镧 │ 铈 │ 镨 │ 钕 │ 钷 │ 钐 │ 铕 │ 钆 │ 铽 │ 镝 │ 钬 │ 铒 │ 铥 │ 镱 │ 镥 │\n\
  76.   │139.│140.│141.│144.│147*│150.│152.│157.│159.│163.│165.│167.│169.│173.│175.│\n\
  77.   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤\n\
  78. 锕│89Ac│90Th│91Pa│92 U│93Np│94Pu│95Am│96Cm│97Bk│98Cf│99Es│100Fm 101Md 102No 103Lr \n\
  79. 系│ 锕 │ 钍 │ 镤 │ 铀 │ 镎 │ 钚 │ 镅 │ 锔 │ 锫 │ 锎 │ 锿 │ 镄 │ 钔 │ 锘 │ 铹 │\n\
  80.   │227.│232.│231.│238.│237.│244*│243*│247*│247*│251*│252*│257*│258*│259*│260*│\n\
  81.   └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘\n"
  82. ////////////////////////////////////////////////////////////////////
  83. #define SUPER_PRIMES "     The larger number of prime numbers is as follows:\n\
  84.   ┌─────────┬──────────────────┐\n\
  85.   │     range N      │   Number of prime numbers PI(N)    │\n\
  86.   ├─────────┼──────────────────┤\n\
  87.   │     10**1        │                                  4 │\n\
  88.   │     10**2        │                                 25 │\n\
  89.   │     10**3        │                                168 │\n\
  90.   │     10**4        │                              1,229 │\n\
  91.   │     10**5        │                              9,592 │\n\
  92.   │     10**6        │                             78,498 │\n\
  93.   │     10**7        │                            664,579 │\n\
  94.   │     10**8        │                          5,761,455 │\n\
  95.   │     10**9        │                         50,847,534 │\n\
  96.   │     10**10       │                        455,052,511 │\n\
  97.   │     10**11       │                      4,118,054,813 │\n\
  98.   │     10**12       │                     37,607,912,018 │\n\
  99.   │     10**13       │                    346,065,536,839 │\n\
  100.   │     10**14       │                  3,204,941,750,802 │\n\
  101.   │     10**15       │                 29,844,570,422,669 │\n\
  102.   │     10**16       │                279,238,341,033,925 │\n\
  103.   │     10**17       │              2,623,557,157,654,233 │\n\
  104.   │     10**18       │             24,739,954,287,740,860 │\n\
  105.   │     10**19       │            234,057,667,276,344,607 │\n\
  106.   │     10**20       │          2,220,819,602,560,918,840 │\n\
  107.   │     10**21       │         21,127,269,486,018,731,928 │\n\
  108.   │     10**22       │        201,467,286,689,315,906,290 │\n\
  109.   │     10**23       │      1,925,320,391,606,803,968,923 │\n\
  110.   │     10**24       │     18,435,599,767,349,200,867,866 │\n\
  111.   │     10**25       │    176,846,309,399,143,769,411,680 │\n\
  112.   │     10**26       │  1,699,246,750,872,437,141,327,603 │\n\
  113.   └─────────┴──────────────────┘"
  114. ////////////////////////////////////////////////////////////////////

  115. /***************定义全局变量*************/
  116. //定义开关词目
  117. #define            SENSITIVE_NUM  20
  118. typedef  enum{                          GET_FIB ,   GET_FACT ,   GET_PI ,   GET_E ,   GET_COMBINATION ,   GET_PERMUTATION ,   GET_DATEDIFFERENCE ,   GET_HASH ,   GET_RESULT ,   GET_STATISTICS ,   GET_SOLUTION ,   GET_ELEMENTS ,   GET_MYTAX ,   GET_INTEREST ,   GET_ANNUITY ,   PRI_LIST ,   PRI_COUNT ,   PRI_INDEX ,   PRI_CHECK ,   PRI_SUM }senum;
  119. static const char* SENSITIVE_WORDS[]={"/GET-FIB", "/GET-FACT", "/GET-PI", "/GET-E", "/GET-COMBINATION", "/GET-PERMUTATION", "/GET-DATEDIFFERENCE", "/GET-HASH", "/GET-RESULT", "/GET-STATISTICS", "/GET-SOLUTION", "/GET-ELEMENTS", "/GET-MYTAX", "/GET-INTEREST", "/GET-ANNUITY", "/PRI-LIST", "/PRI-COUNT", "/PRI-INDEX", "/PRI-CHECK", "/PRI-SUM"};
  120. static const char  SENSITIVE_ARGVS[]={         1,           1,         1,        1,                  2,                  2,                     2,           1,             1,                 1,               1,               0,            2,               3,              3,           1,            1,            1,            1,          1};

  121. /***************库函数声明***************/
  122. //字符串哈希
  123. void GetStringHash(const char*);
  124. //解高次方程
  125. void Univariate_Equation(int, char**);
  126. //逆波兰核心
  127. double RevPolishCore(const char*);
  128. //阶乘函数
  129. void SmallFact(int);
  130. //π函数
  131. int SmallPI(int, long long, long long, long long, long long);
  132. //e函数
  133. void SmallE(int);
  134. //个税计算
  135. double SmallTax(int, int);
  136. //计算日期差
  137. void SmallDateminus(int, int);

  138. /***************功能函数群***************/
  139. //辨关键词
  140. int itifyWORDS(const char* strARGV)
  141. {
  142.         int SN;
  143.         for(SN=0; SN<SENSITIVE_NUM; SN++){
  144.                 char *op=(char*)strARGV, *kp=(char*)SENSITIVE_WORDS[SN];
  145.                 while(*kp!='\0'){
  146.                         if( (('a'<= *op && *op<='z')?*op-32:*op) != (('a'<= *kp && *kp<='z')?*kp-32:*kp) ){break;}
  147.                         op++;kp++;
  148.                 }
  149.                  if(
  150.                         ((*kp=='\0') && (*op==' '||*op=='\t'||*op=='\r'||*op=='\n'||*op=='\0')) ||
  151.                         (int)kp-(int)SENSITIVE_WORDS[SN] >6
  152.                 ){
  153.                         return SN;
  154.                 }
  155.         }                               
  156.         return -1;
  157. }
  158. //计算组合数C(n,m)
  159. long long Combination(long long  n,long long  m)
  160. {
  161.         if(m==1){
  162.                 return n;
  163.         }
  164.         else{
  165.                 if(m>n/2){m=n-m;}
  166.                 long long  sum=1, *r=(long long*)calloc(1000, sizeof(long long)), i, j, count=1;
  167.                 for(j=n;j>n-m;j--){
  168.                         sum*=j,i=1;
  169.                         for(i=2;i<=m;i++){
  170.                                 if(r[i]==0 && sum%i==0){
  171.                                         sum/=i, r[i]=1, count+=1;
  172.                                 }
  173.                         }
  174.                 }
  175.                 if(count==m && sum>0){free(r);return sum;}
  176.         }
  177.         return -1;
  178. }
  179. //计算排列数P(n,m)
  180. long long Permutation(long long n,long long m)
  181. {
  182.         long long  sum=1, i, j;
  183.         for(i=1,j=n; i<=m; i++,j--){
  184.                 sum*=j;
  185.                 if(sum<0){
  186.                           return -1;
  187.                         break;
  188.                 }
  189.        
  190.         }
  191.         return sum;
  192. }
  193. //斐波那契函数
  194. void Fibonacci(int n, int k)
  195. {
  196.         int i,j,tmp=0,add;
  197.         int *Fa=(int*)calloc(110000, sizeof(int)), *Fb=(int*)calloc(110000, sizeof(int));

  198.         Fa[1]=Fb[1]=1;
  199.         if(n==0 &&k==0){
  200.                 printf("fib(0) = 0");
  201.         }else if(n<=2 &&k==0){
  202.                 printf("fib(%d) = 1",n);
  203.         }else{
  204.                 int N=ceil(n*log10((1+sqrt(5))/2)-log10(5)/2);
  205.                 for(i=3;i<=n;i++){
  206.                         add=0;
  207.                         for(j=1;j<=N/9+1;j++){
  208.                                 tmp=Fa[j]+Fb[j]+add, Fa[j]=Fb[j], add=tmp/1000000000, Fb[j]=tmp%1000000000;
  209.                         }
  210.                 }
  211.                 if(n<45){
  212.                         printf("fib(%d) = %d", n, Fb[1]);
  213.                 }else if(n>=45){
  214.                         printf("fib(%d) = %d", n, Fb[N/9+1]);
  215.                         for(j=N/9;j>1;j--){
  216.                                 printf("%09d",Fb[j]);
  217.                         }
  218.                         printf("%09d",Fb[1]);
  219.                 }
  220.         }
  221.         free(Fa);
  222.         free(Fb);
  223. }
  224. //统计函数
  225. void Statistics(int sargc, char** sargv)
  226. {
  227.         double s=0,q=0;
  228.         int i;
  229.         for(i=2;i<sargc;i++){
  230.                 s+=atof(sargv[i]);
  231.         }
  232.         double e=s/(sargc-2);
  233.         for(i=2;i<sargc;i++){
  234.                 q+=(atof(sargv[i])-e)*(atof(sargv[i])-e);
  235.         }
  236.         fprintf(stdout,
  237.                 "[Statistics]\n"
  238.                 "  Sample expectation  E(x)=%16.12lf\n"
  239.                 "  Sample variance     D(x)=%16.12lf\n"
  240.                 "  Free deviation      Q(x)=%16.12lf\n"
  241.                 "  Standard deviation  V(x)=%16.12lf\n"
  242.                 "  And values          S(x)=%16.12lf\n"
  243.                 ,
  244.                 e, q/(sargc-2), sqrt(q/(sargc-3)), sqrt(q/(sargc-2)), s
  245.         );
  246. }



  247. /*************MAIN主函数入口*************/
  248. int main(int argc, char** argv)
  249. {
  250.         //参数过少则抛出使用说明
  251.         if( argc==1 || (argc>1 && argv[1][0]=='/' && (argv[1][1]=='?'||argv[1][1]=='h'||argv[1][1]=='H')) ){
  252.                 fputs(HELP_INFORMATION, stdout);
  253.                 exit(0);
  254.         }

  255.         //解析开关命令
  256.         //setlocale(LC_ALL, "chs");
  257.         int SN=itifyWORDS(argv[1]);

  258.         if(!(0<=SN &&SN<=19)){
  259.                 //无法识别的开关
  260.                 fprintf(stderr, "Unrecognized switch '%s'\n", argv[1]);
  261.                 exit(1);
  262.         }

  263.         if(argc< 1+1+SENSITIVE_ARGVS[SN]){
  264.                 //缺少必要参数
  265.                 fprintf(stderr, "The switch '%s' needs %d parameters\n", argv[1], SENSITIVE_ARGVS[SN]);
  266.                 exit(1);
  267.         }

  268.         //执行开关命令
  269.         switch((senum)SN)
  270.         {
  271.         //GET系列开关
  272.         case GET_FIB:
  273.                 Fibonacci(atoi(argv[2]), 0);
  274.                 break;
  275.         case GET_FACT:
  276.                 SmallFact(atoi(argv[2]));
  277.                 break;
  278.         case GET_PI:
  279.                 {
  280.                         int n=((int)(atoll(argv[2])/4+1)*4)*3.5;
  281.                         if(n>126000){
  282.                                 printf("超出设定计算范围");
  283.                         }else{
  284.                                 SmallPI(n,0,0,0,0);
  285.                         }
  286.                 }
  287.                 break;
  288.         case GET_E:
  289.                 SmallE(atoi(argv[2]));
  290.                 break;
  291.         case GET_COMBINATION:
  292.                 fprintf(stdout, "%lld\n", Combination(atoll(argv[2]),  atoll(argv[3])) );
  293.                 break;
  294.         case GET_PERMUTATION:
  295.                 fprintf(stdout, "%lld\n", Permutation(atoll(argv[2]),  atoll(argv[3])) );
  296.                 break;
  297.         case GET_DATEDIFFERENCE:
  298.                 SmallDateminus(atoi(argv[2]),  atoi(argv[3]));
  299.                 break;
  300.         case GET_HASH:
  301.                 GetStringHash((const char*)argv[2]);
  302.                 break;
  303.         case GET_RESULT:
  304.                 fprintf(stdout, "%.12lf\n", RevPolishCore(argv[2]));
  305.                 break;
  306.         case GET_STATISTICS:
  307.                 Statistics(argc, argv);
  308.                 break;
  309.         case GET_SOLUTION:
  310.                 Univariate_Equation(argc, argv);
  311.                 break;
  312.         case GET_ELEMENTS:
  313.                 system("mode con cols=120 lines=30");
  314.                 fputs(CHEMICAL_ELEMENTS, stdout);
  315.                 break;
  316.         case GET_MYTAX:
  317.                 SmallTax(atoi(argv[2]), atoi(argv[3]));
  318.                 break;
  319.         case GET_INTEREST:
  320.                 fprintf(stdout, "%.12lf\n", atof(argv[2])*pow(atof(argv[3])+1.0,atof(argv[4])) );
  321.                 break;
  322.         case GET_ANNUITY:
  323.                 fprintf(stdout, "%.12lf\n", atof(argv[2])*(pow(atof(argv[3])+1,atoi(argv[4]))-1)/atof(argv[3]));
  324.                 break;

  325.         //素数系列开关
  326.         case PRI_LIST:
  327.                 if(argc==3){
  328.                         long long n =atoll(argv[2]);
  329.                         if(n<500){
  330.                                 preprime(n);
  331.                         }else if(n<=30000000){
  332.                                 prime((int)(n));
  333.                         }else if(n<999900000000){
  334.                                 class_prime(1000000);
  335.                                 prif(n);
  336.                         }else{
  337.                                 fputs(SUPER_PRIMES, stdout);       
  338.                         }
  339.                 }else if(argc==4){  
  340.                         long long N =atoll(argv[3]);          
  341.                         if(N<=30000000){
  342.                                 listprimes(atoll(argv[2]),atoll(argv[3]));
  343.                         }else if(N<999900000000){
  344.                                 class_prime(1000000);
  345.                                 long long M=atoll(argv[2]);
  346.                                 M=M-(M&1),N=N+(N&1);
  347.                                 if(N-M<=10000000 && N-M>0){
  348.                                         int i, t=FFJ(M, N), T=0, LP;
  349.                                         bool* bm=get_boolp();
  350.                                         printf("%s 到 %s 的素数切片,共计%d个素数\n", argv[2], argv[3], t);
  351.                                         printf("┌────────────────────────────────┐\n");
  352.                                         for(i=1; i<=10000000; i+=2){
  353.                                                 if(!bm[i]){
  354.                                                         T++;
  355.                                                         printf("%13lld", i+M);
  356.                                                         if(T%5==0){printf("\n");}
  357.                                                         if(T==t){LP=i;break;}
  358.                                                 }
  359.                                         }
  360.                                         printf( "\n└────────────────────────────────┘"
  361.                                                 "\n该范围内最大的素数为:%lld"
  362.                                                 ,M+LP
  363.                                         );               
  364.                                 }

  365.                         }else{
  366.                                 printf("超出切片范围");
  367.                         }
  368.                 }
  369.                 break;
  370.         case PRI_COUNT:
  371.                 {
  372.                         long long n=atoll(argv[2]);
  373.                         if(n<=50000000000){
  374.                                 countprimes(n);
  375.                         }else{
  376.                                 fputs(SUPER_PRIMES, stdout);
  377.                         }
  378.                 }
  379.                 break;
  380.         case PRI_INDEX:
  381.                 if(argc==3){
  382.                         indexprime(atoll(argv[2]));
  383.                        
  384.                 }else{
  385.                         index2prime(atoll(argv[2]),atoll(argv[3]));
  386.                 }
  387.                 break;
  388.         case PRI_CHECK:
  389.             if(isPrime(atoll(argv[2]),5)){
  390.             fprintf(stdout, "%s是素数",  argv[2]);
  391.         }
  392.         else{
  393.             fprintf(stdout, "%s不是素数",argv[2]);
  394.         }
  395.                 break;
  396.         case PRI_SUM:
  397.                 {
  398.                         long long n =atoll(argv[2]);
  399.                         if(n<=4200000000){
  400.                                 fprintf(stdout, "%lld", primesum(n));
  401.                         }
  402.                 }
  403.                 break;
  404.         }

  405.         return 0;
  406. }
复制代码

评分

参与人数 2技术 +2 收起 理由
523066680 + 1 回来点赞!
老刘1号 + 1 666

查看全部评分

发表于 2017-2-24 09:49:46 | 显示全部楼层
i new i new new i
 楼主| 发表于 2017-2-24 10:17:16 | 显示全部楼层
回复 2# codegay
,不错,就叫这个名字吧。inew
发表于 2017-2-28 11:38:41 | 显示全部楼层
很牛X的代码,学习了
发表于 2017-2-28 11:38:57 | 显示全部楼层
很牛X的代码,学习了
发表于 2017-4-19 22:46:57 | 显示全部楼层
突然看到了周期表……吃鲸……
发表于 2025-6-30 11:03:07 | 显示全部楼层
不错,,学习了,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:03 , Processed in 0.027438 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表