设为首页 加入收藏

TOP

从“最简真分数的个数”谈起(七)
2019-09-14 00:51:37 】 浏览:228
Tags:简真 分数 个数 谈起
;      由于筛法从i=2开始进行,所有phi[i]元素值初始全为0。

      1)phi[2]=0,2在筛子中,2是质数,开始执行筛法过程,对指定范围内所有2的倍数进行处理。

          phi[2]=0   phi[2]=2   (置初始值表示筛掉 )   phi[2]=phi[2]*(2-1)/2 =1   (由于2是其质因数,按公式需 *(1-1/2)  )

          phi[4]=0   phi[4]=4   (置初始值表示筛掉 )   phi[4]=phi[4]*(2-1)/2 = 2  ( 由于2是其质因数,按公式需 *(1-1/2)  )

          phi[6]=0   phi[6]=6                                           phi[6]=phi[6]*(2-1)/2 = 3

            ……

          phi[30]=0   phi[30]=30                                     phi[30]=phi[30]*(2-1)/2 = 15

      2)i++进行下一次循环。i=3,phi[3]=0,3在筛子中,3是质数,开始执行筛法过程,对指定范围内所有3的倍数进行处理。     

           phi[3]=0   phi[3]=3   (置初始值表示筛掉 )   phi[3]=phi[3]*(3-1)/3 =2   (3是其质因数,按公式需 *(1-1/3) )

           phi[6]=3  不等于0,已筛过,不再置初始值,直接phi[6]=phi[6]*(3-1)/3 =2  (3是其质因数,按公式需 *(1-1/3) ) 

           phi[9]=0   phi[9]=9   (置初始值表示筛掉 )   phi[9]=phi[9]*(3-1)/3 =6   (3是其质因数,按公式需 *(1-1/3) )

           ……

          phi[30]=15                                                       phi[30]=phi[30]*(3-1)/3 = 10

      3)i++进行下一次循环,i=4,phi[4]=2,4不在筛子中,4不是质数,不进行处理。

      4)i++进行下一次循环。i=5,phi[5]=0,5在筛子中,5是质数,开始执行筛法过程,对指定范围内所有5的倍数进行处理。     

           phi[5]=0   phi[5]=5   (置初始值表示筛掉 )   phi[5]=phi[5]*(5-1)/5 =4   (5是其质因数,按公式需 *(1-1/5) )

           phi[10]=5  不等于0,已筛过,直接              phi[10]=phi[10]*(5-1)/5 =4  (5是其质因数,按公式需 *(1-1/5) ) 

            ……

          phi[30]=10                                                      phi[30]=phi[30]*(5-1)/5 = 8

       根据上面的描述,可以将这个筛法过程写成如下的二重循环。

for (i=2; i <= n; i++)
{
        if (phi[i]==0)                   // i在筛子中,是质数
        for (j = i; j <= n; j+=i)     // 处理i的倍数
        {
              if (phi[j]==0) // 在筛子中,筛掉
                      phi[j] = j;
              phi[j] = phi[j]/i*(i-1);
         }
}

 

 【例3】欧拉函数的应用。

   

首页 上一页 4 5 6 7 下一页 尾页 7/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇变量的实现机制 下一篇QRowTable表格控件(四)-效率优化..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目