當前位置:編程學習大全網 - 編程軟體 - c語言求質因子(質數且是輸入數的因子)最多的那個數

c語言求質因子(質數且是輸入數的因子)最多的那個數

要找到滿足題意的數,

就是小於等於n的最大的2的冪,

證明:

假設這個數m是2^k,並且2^k小於等於n。

那麽它有k個質因子(都是2),

反證法:

假如某個數x有k+1個因子,

質數裏面最小的是2,那麽該數x壹定滿足:

m<2^(k+1)<=x<=n

因為m是小於等於n的最大的2的冪,因此x不存在。

所以m就是小於等於n的最大的2的冪。

(註意這裏說的是最多有k個因子,最小的是2^k,k個因子還可能是2^(k-1)*3,也是有可能的,但是就是不可能有k+1個因子)

代碼:

#include?<stdio.h>

unsigned?flp2(unsigned?x)

{

x?=?x?|?(x?>>?1);

x?=?x?|?(x?>>?2);

x?=?x?|?(x?>>?4);

x?=?x?|?(x?>>?8);

x?=?x?|?(x?>>?16);

return?x?-?(x?>>?1);

}

int?main()

{

printf("%u",?flp2(1000000000));

return?0;

}

  • 上一篇:VC++動態鏈接庫(DLL)編程之庫的調試與查看
  • 下一篇:凱迪拉克xt4擋位教程
  • copyright 2024編程學習大全網