程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> linux c 分解質因數,linux分解質因數

linux c 分解質因數,linux分解質因數

編輯:關於C語言

linux c 分解質因數,linux分解質因數


 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <math.h>
 5 
 6 int main(int argc, char **argv)
 7 {
 8     unsigned long long data = 0, i = 0, max = 0;
 9     
10     if (argc < 2)
11     {
12         printf("argument error\n");
13         return -1;
14     }
15 
16     if (strlen(argv[1]) > 19)
17     {
18         printf("out of range\n");
19         return -1;
20     }
21     
22     data = atoll(argv[1]);
23 
24     if (9223372036854775807ULL == data && ('8' == argv[1][18] || '9' == argv[1][18]))
25     {
26         printf("out of range\n");
27         return -1;
28     }
29     
30     printf("data : %llu\n", data);
31     while (1)
32     {
33         max = sqrt(data);
34         for (i = 2; i <= max; i++)
35         {
36             if (0 == (data % i))
37             {
38                 data = data / i;
39                 printf("%llu * ", i);
40                 fflush(stdout);
41                 break;
42             }
43         }
44 
45         if (i > max)
46         {
47             printf("%llu", data);
48             break;
49         }
50     }
51     printf("\n");
52     
53     return 0;
54 }

實現了2^64-1以下數字的求質因數,

編譯時報錯undefined reference to `sqrt'

man了下 發現編譯時要加-lm

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved