zoukankan      html  css  js  c++  java
  • 素数筛算法之寻找每个数的最小素因子

     //该算法的思路是利用素数筛的想法,当判定一个数为素数后它的倍数必定为合数,此时不必将其标记为1,可以将该素数直接
    赋给他的所有倍数,当作这些数的最小素因子,然后依次循环

    例如当i=2时,经过if(prime[i])判定为零,不满足条件,则则执行下面的语句:

    将2赋值给它的所有倍数,因为它将作为最小素因子

    for(int j = i; j <= MAX_N;j += i){

     if(prime[j]) continue;//如果当前合数已经被标记了,则跳过
     prime[j]= i; //将当前素因子赋值给prime[j]
     } 

    2的所有倍数赋值完后执行i的下一轮循环,执行判断条件

    代码:

    #include<stdio.h>
     #define MAX_N 100
    int prime[MAX_N + 5];//存储每个数的最小素因子,全局数组每个元素被自动赋值为0

     void init(){
     for(int i = 2;i <= MAX_N; i++){
     if(prime[i]) continue;//如果已经赋值,就跳过
     for(int j = i; j <= MAX_N;j += i){
     if(prime[j]) continue;//如果当前合数已经被标记了,则跳过
     prime[j]= i; //将当前素因子赋值给prime[j]
     }
     }
     return ;
     }
     int main(){
     init();
     for(int i=2;i<= MAX_N;i++){
     printf("MIN_factory[%d]= %d ", i,prime[i]);
     }
     return 0;
     }

  • 相关阅读:
    h5 canvas
    css3选择器
    弹性盒模型
    css新增属性
    蒙版 倒影 渐变
    字符串转化为json的三种方法
    Final互评------《弹球学成语》---- 杨老师粉丝群
    Final互评------《飞词》---- 拉格朗日2018
    作业 20181204-4 互评Final版本
    换手
  • 原文地址:https://www.cnblogs.com/liyaning/p/14598107.html
Copyright © 2011-2022 走看看