国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

HDU-2098

2019-11-14 13:05:23
字體:
來源:轉載
供稿:網友

題目:

把一個偶數拆成兩個不同素數的和,有幾種拆法呢?

代碼:

#include<iostream>#include<cmath>#include<cstring>using namespace std;int main(){ long long array[10001]; memset(array,0,sizeof(array)); for(int i = 2,j = 4;i <= 10000;i++,j+=i*2-1) { if(!array[i]) for(int k = j;k < 10000;k += i) array[k] = 1; }//“埃氏篩法” int num = 0; while(cin >> num) { if(num == 0) return 0; int sum = 0; int temp = num/2; for(int i = 2;i <= temp;i++) { int a = num-i; if(!array[i] && !array[a] && a!=i) { sum++; } } cout << sum <<endl; }}

理解:

這道題,題目很明了,但是拿到以后,我不知道怎么拆,一個一個找素數這種暴力方法。。TLE。。。。所以,我想很定是有什么專門的方法來找素數,再查了一下以后,知道了“埃拉托斯特尼篩法”也叫埃氏篩法,是一個很好用的素數篩法。然后利用這個篩法,在進行拆分,就很好解決了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南宁市| 通山县| 丰宁| 焉耆| 五大连池市| 丰台区| 泸州市| 雷州市| 桃园市| 武汉市| 浦东新区| 常德市| 冷水江市| 陕西省| 阿尔山市| 阳春市| 牡丹江市| 中宁县| 元江| 宜宾市| 文昌市| 开封县| 盐山县| 南康市| 马公市| 偏关县| 鄂托克前旗| 商城县| 庆阳市| 怀柔区| 武平县| 安丘市| 漳平市| 顺平县| 洪泽县| 宜阳县| 汶上县| 抚顺市| 襄汾县| 赫章县| 肥乡县|