/*
素數判斷:素數篩選法(用素數篩選合數)
*/#include
#include
#define max_n 100
//素數篩選法
int prime[max_n +5]
=;//初始化為0
void
init()
}}}int
main()
printf
("\n");
return0;
}
/*
求2~n內每個數的最小素因子
*/#include
#include
#define max_n 100
int prime[max_n +5]
=;//初始化為0
void
init()
}}}int
main()
return0;
}
/*
素數判斷:線性篩選
*/#include
#include
#define max_n 100
//線性篩選(尤拉篩選)
int prime[max_n +5]
=;//初始化為0
void
init()
for(
int j=
1;j<=prime[0]
;j++)}
}int
main()
printf
("\n");
return0;
}
/*
求第10001個素數
*/#include
#include
#define max_n 200000
//線性篩選(尤拉篩選)
int prime[max_n +5]
=;//初始化為0
void
init()
for(
int j=
1;j<=prime[0]
;j++)}
}int
main()
答案是:104743
/*
求2~n內每個素的質因數個數,如2的質因數個數為2(1,2),4的質因數個數為3(1,2,4)
*/#include
#include
using
namespace std;
#define max_n 100
int prime[max_n+5]
=;int factory_cnt[max_n]=;
void
init()
int tem = i;
int j =1;
int cnt ,ans =1;
while
(tem!=1)
ans *=(
1+cnt)
; j++;}
factory_cnt[i]
= ans;}}
intmain()
printf
("\n");
}
輸出
223
2424
3426
2445
2626
4428
3446
2826
4449
2448
2826
64210
3646
2848
44212
2467
4826
48212
2466
48210
54212
4448
21246
44412
2669
更好的解法
#include
#include
using
namespace std;
intmain()
for(
int j=
1;j<=prime[0]
;j++
)else}}
for(
int i=m;i<=n;i++
)delete
prime;
delete
cnt;
delete
fac;
}
Eratosthenes篩選法與尤拉篩選法
eratosthenes篩選法與尤拉篩選法 由於乙個合數總是可以分解成若干個質數的乘積,那麼如果把質數的倍數都去掉,那麼剩下的就是質數了.eratosthenes篩選法的思想特別簡單 對於不超過n的每個非負整數p,刪除2p,3p,4p,當處理完所有數之後,還沒有被刪除的就是素數.如果用vis i 表...
篩選法求尤拉函式
可以借鑑之前的求質因數分解的線性求法。對於要求1 n上的尤拉函式的和 尤拉函式定義如下 那麼 pi n 等於多少呢?由定義可以知道,尤拉函式和質因子的次方無關。因此這時候要分類討論 1.pi 如果是n的質因子,那麼 pi n pi n 2.如果不是,pi n pi n pi 1 pi 實現如下 in...
質數篩選 素數篩選法
int prime 100010 void prime for int i 1 i i 1000000 i define size 1000000 int main 元素值為0代表是素數 int prime size int pos 0 int flag for int i 2 i size i p...