[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 happy886rr 于 2017-2-23 21:07 编辑
NEW I.EXE  版本1.0

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

下载:

用法:(开关支持近似输入法,比如 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. return sum;
  191. }
  192. //斐波那契函数
  193. void Fibonacci(int n, int k)
  194. {
  195. int i,j,tmp=0,add;
  196. int *Fa=(int*)calloc(110000, sizeof(int)), *Fb=(int*)calloc(110000, sizeof(int));
  197. Fa[1]=Fb[1]=1;
  198. if(n==0 &&k==0){
  199. printf("fib(0) = 0");
  200. }else if(n<=2 &&k==0){
  201. printf("fib(%d) = 1",n);
  202. }else{
  203. int N=ceil(n*log10((1+sqrt(5))/2)-log10(5)/2);
  204. for(i=3;i<=n;i++){
  205. add=0;
  206. for(j=1;j<=N/9+1;j++){
  207. tmp=Fa[j]+Fb[j]+add, Fa[j]=Fb[j], add=tmp/1000000000, Fb[j]=tmp%1000000000;
  208. }
  209. }
  210. if(n<45){
  211. printf("fib(%d) = %d", n, Fb[1]);
  212. }else if(n>=45){
  213. printf("fib(%d) = %d", n, Fb[N/9+1]);
  214. for(j=N/9;j>1;j--){
  215. printf("%09d",Fb[j]);
  216. }
  217. printf("%09d",Fb[1]);
  218. }
  219. }
  220. free(Fa);
  221. free(Fb);
  222. }
  223. //统计函数
  224. void Statistics(int sargc, char** sargv)
  225. {
  226. double s=0,q=0;
  227. int i;
  228. for(i=2;i<sargc;i++){
  229. s+=atof(sargv[i]);
  230. }
  231. double e=s/(sargc-2);
  232. for(i=2;i<sargc;i++){
  233. q+=(atof(sargv[i])-e)*(atof(sargv[i])-e);
  234. }
  235. fprintf(stdout,
  236. "[Statistics]\n"
  237. "  Sample expectation  E(x)=%16.12lf\n"
  238. "  Sample variance     D(x)=%16.12lf\n"
  239. "  Free deviation      Q(x)=%16.12lf\n"
  240. "  Standard deviation  V(x)=%16.12lf\n"
  241. "  And values          S(x)=%16.12lf\n"
  242. ,
  243. e, q/(sargc-2), sqrt(q/(sargc-3)), sqrt(q/(sargc-2)), s
  244. );
  245. }
  246. /*************MAIN主函数入口*************/
  247. int main(int argc, char** argv)
  248. {
  249. //参数过少则抛出使用说明
  250. if( argc==1 || (argc>1 && argv[1][0]=='/' && (argv[1][1]=='?'||argv[1][1]=='h'||argv[1][1]=='H')) ){
  251. fputs(HELP_INFORMATION, stdout);
  252. exit(0);
  253. }
  254. //解析开关命令
  255. //setlocale(LC_ALL, "chs");
  256. int SN=itifyWORDS(argv[1]);
  257. if(!(0<=SN &&SN<=19)){
  258. //无法识别的开关
  259. fprintf(stderr, "Unrecognized switch '%s'\n", argv[1]);
  260. exit(1);
  261. }
  262. if(argc< 1+1+SENSITIVE_ARGVS[SN]){
  263. //缺少必要参数
  264. fprintf(stderr, "The switch '%s' needs %d parameters\n", argv[1], SENSITIVE_ARGVS[SN]);
  265. exit(1);
  266. }
  267. //执行开关命令
  268. switch((senum)SN)
  269. {
  270. //GET系列开关
  271. case GET_FIB:
  272. Fibonacci(atoi(argv[2]), 0);
  273. break;
  274. case GET_FACT:
  275. SmallFact(atoi(argv[2]));
  276. break;
  277. case GET_PI:
  278. {
  279. int n=((int)(atoll(argv[2])/4+1)*4)*3.5;
  280. if(n>126000){
  281. printf("超出设定计算范围");
  282. }else{
  283. SmallPI(n,0,0,0,0);
  284. }
  285. }
  286. break;
  287. case GET_E:
  288. SmallE(atoi(argv[2]));
  289. break;
  290. case GET_COMBINATION:
  291. fprintf(stdout, "%lld\n", Combination(atoll(argv[2]),  atoll(argv[3])) );
  292. break;
  293. case GET_PERMUTATION:
  294. fprintf(stdout, "%lld\n", Permutation(atoll(argv[2]),  atoll(argv[3])) );
  295. break;
  296. case GET_DATEDIFFERENCE:
  297. SmallDateminus(atoi(argv[2]),  atoi(argv[3]));
  298. break;
  299. case GET_HASH:
  300. GetStringHash((const char*)argv[2]);
  301. break;
  302. case GET_RESULT:
  303. fprintf(stdout, "%.12lf\n", RevPolishCore(argv[2]));
  304. break;
  305. case GET_STATISTICS:
  306. Statistics(argc, argv);
  307. break;
  308. case GET_SOLUTION:
  309. Univariate_Equation(argc, argv);
  310. break;
  311. case GET_ELEMENTS:
  312. system("mode con cols=120 lines=30");
  313. fputs(CHEMICAL_ELEMENTS, stdout);
  314. break;
  315. case GET_MYTAX:
  316. SmallTax(atoi(argv[2]), atoi(argv[3]));
  317. break;
  318. case GET_INTEREST:
  319. fprintf(stdout, "%.12lf\n", atof(argv[2])*pow(atof(argv[3])+1.0,atof(argv[4])) );
  320. break;
  321. case GET_ANNUITY:
  322. fprintf(stdout, "%.12lf\n", atof(argv[2])*(pow(atof(argv[3])+1,atoi(argv[4]))-1)/atof(argv[3]));
  323. break;
  324. //素数系列开关
  325. case PRI_LIST:
  326. if(argc==3){
  327. long long n =atoll(argv[2]);
  328. if(n<500){
  329. preprime(n);
  330. }else if(n<=30000000){
  331. prime((int)(n));
  332. }else if(n<999900000000){
  333. class_prime(1000000);
  334. prif(n);
  335. }else{
  336. fputs(SUPER_PRIMES, stdout);
  337. }
  338. }else if(argc==4){  
  339. long long N =atoll(argv[3]);   
  340. if(N<=30000000){
  341. listprimes(atoll(argv[2]),atoll(argv[3]));
  342. }else if(N<999900000000){
  343. class_prime(1000000);
  344. long long M=atoll(argv[2]);
  345. M=M-(M&1),N=N+(N&1);
  346. if(N-M<=10000000 && N-M>0){
  347. int i, t=FFJ(M, N), T=0, LP;
  348. bool* bm=get_boolp();
  349. printf("%s 到 %s 的素数切片,共计%d个素数\n", argv[2], argv[3], t);
  350. printf("┌────────────────────────────────┐\n");
  351. for(i=1; i<=10000000; i+=2){
  352. if(!bm[i]){
  353. T++;
  354. printf("%13lld", i+M);
  355. if(T%5==0){printf("\n");}
  356. if(T==t){LP=i;break;}
  357. }
  358. }
  359. printf( "\n└────────────────────────────────┘"
  360. "\n该范围内最大的素数为:%lld"
  361. ,M+LP
  362. );
  363. }
  364. }else{
  365. printf("超出切片范围");
  366. }
  367. }
  368. break;
  369. case PRI_COUNT:
  370. {
  371. long long n=atoll(argv[2]);
  372. if(n<=50000000000){
  373. countprimes(n);
  374. }else{
  375. fputs(SUPER_PRIMES, stdout);
  376. }
  377. }
  378. break;
  379. case PRI_INDEX:
  380. if(argc==3){
  381. indexprime(atoll(argv[2]));
  382. }else{
  383. index2prime(atoll(argv[2]),atoll(argv[3]));
  384. }
  385. break;
  386. case PRI_CHECK:
  387.     if(isPrime(atoll(argv[2]),5)){
  388.             fprintf(stdout, "%s是素数",  argv[2]);
  389.         }
  390.         else{
  391.             fprintf(stdout, "%s不是素数",argv[2]);
  392.         }
  393. break;
  394. case PRI_SUM:
  395. {
  396. long long n =atoll(argv[2]);
  397. if(n<=4200000000){
  398. fprintf(stdout, "%lld", primesum(n));
  399. }
  400. }
  401. break;
  402. }
  403. return 0;
  404. }
复制代码
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
2

评分人数

i new i new new i
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 2# codegay
,不错,就叫这个名字吧。inew

TOP

很牛X的代码,学习了

TOP

很牛X的代码,学习了

TOP

突然看到了周期表……吃鲸……

TOP

返回列表