• 一个关于素数的性质


    一 写在前面

    1.1 本文内容

    一个关于素数的性质。

    二 素数性质

    性质:所有大于等于5的素数一定和6的倍数相邻!此性质可以被证明,证明方法可以去搜索相关资料。下面给出1000以内的素数,你可以验证一下看是不是这样。

    有了这个性质,下面再给出一个其在质因数分解中的实际应用例子。题目链接在此。题目大意是给定一个正整数N,要求将其分解成多个质因数相乘的形式。需要注意的是质因数分解的常用算法是试除法,例子中使用的也是试除法。并且每一个合数都能够写成几个质因数相乘的形式。

     质因数分解:http://oj.noi.cn/oj/#main/show/1170

    上述题目的一个可行代码如下:

     1 #include <stdio.h>
     2 #include <stdbool.h>
     3 
     4 int main(int argc, char *argv[])
     5 {
     6     //freopen("in.txt", "r", stdin);
     7     int n, step;
     8     bool first = true;
     9 
    10     scanf("%d", &n);
    11 
    12     /* 将数n中包含的2, 3, 5这三个质因数给除去 */
    13     while (n % 2 == 0)
    14     {
    15         (first == true) ? printf("2") : printf("*2");
    16         first = false;
    17         n /= 2;
    18     }
    19     while (n % 3 == 0)
    20     {
    21         (first == true) ? printf("3") : printf("*3");
    22         first = false;
    23         n /= 3;
    24     }
    25     while (n % 5 == 0)
    26     {
    27         (first == true) ? printf("5") : printf("*5");
    28         first = false;
    29         n /= 5;
    30     }
    31 
    32     /* 让step从6开始,考察step相邻的两个数,如果能整除n,则将其除去 */
    33     step = 6;
    34     while (n >= (step-1))
    35     {
    36         if (n % (step-1) == 0)
    37         {
    38             (first == true) ? printf("%d", step-1) : printf("*%d", step-1);
    39             first = false;
    40             n /= (step-1);
    41         }
    42         else if (n % (step+1) == 0)
    43         {
    44             (first == true) ? printf("%d", step+1) : printf("*%d", step+1);
    45             first = false;
    46             n /= (step+1);
    47         }
    48         else
    49         {
    50             step += 6;
    51         }
    52     }
    53 
    54     putchar('
    ');
    55     //fclose(stdin);
    56     return 0;
    57 }
  • 相关阅读:
    php反射
    html video api控件总结
    linux CentOS7.2安装ffmpeg-3.0.2
    2019年7月12日星期五(C语言)
    2019年7月11日星期四(C语言)
    2019年7月10日星期三(C语言)
    2019年7月9日星期二(C语言)
    2019年7月8日星期一(C语言)
    2019年7月5日星期五(C语言)
    2019年7月4日星期四(C语言及LINUX命令)
  • 原文地址:https://www.cnblogs.com/laizhenghong2012/p/8734412.html
Copyright © 2020-2023  润新知