[day 4]判断素数_不死心想用day 2优化完成上下界
2014-07-19 22:04
351 查看
//Method_2_Eratosthenes_1.cpp //判断a到b范围内的素数(包含上下界) //从小到大扣掉素数的倍数 //Input a,b (正整数) //Output q,w,e,...(范围内素数,逗号分格,每5个一行) #include <iostream> #include <cmath> using namespace std; int pow2(int x){//2的x次方 int ans = 2; if(x == 0) return 1; for(int i = 1; i < x; i++){ ans = ans * 2; } return ans; } int value_1(int x){//下界为偶数 return x+pow2(x)+1; } int value_0(int x){//下界为奇数 return x+pow2(x); } int main(){ int a,b; cin >> a >> b; //创建数组 int length = (b-a+1)/2; bool prime[length]; memset(prime,true,sizeof(prime)); //判断对应函数 bool flag = 0; if(a%2 == 0) flag = 1;//应用value_1 //判断素数 筛选 double b_sqrt_2 = sqrt(b)*2; if(flag == 1){ for(int x = 0;value_1(x) < b_sqrt_2 ;x++){ int x_value = value_1(x); double temp = sqrt(x_value); for(int i = 2;i <= temp;i++){ if(x_value%i == 0){ prime[x]=0;//存在非1非n可整除,非素数 break; } } } for(int j = 0;value_1(j) < b_sqrt_2;j++){ int j_value = value_1(j); if(prime[j]){ for(int i = j+j_value; i < length;i = i+j_value){ prime[i]=0; } } } //===========显示============ int judge = 0;//判断换行 for(int x = 0; x < length; x++){ if(prime[x]){ cout << value_1(x) << ','; judge++; if(judge%5 == 0) cout << endl; } } } else{ for(int x = 0;value_0(x) < b_sqrt_2;x++){ int x_value = value_0(x); double temp = sqrt(x_value); for(int i = 2;i <= temp;i++){ if(x_value%i == 0){ prime[x]=0;//存在非1非n可整除,非素数 break; } } } for(int j = 0;value_0(j) < b_sqrt_2;j++){ int j_value = value_0(j); if(prime[j]){ for(int i = j+j_value; i < length;i = i+j_value){ prime[i]=0; } } } //===========显示============ int judge = 0;//判断换行 for(int x = 0; x < length; x++){ if(prime[x]){ cout << value_0(x) << ','; judge++; if(judge%5 == 0) cout << endl; } } } return 0; }
还没倒腾明白呢....练习几天终于做到写出代码没有错啦~逻辑也觉着自己很正确 可惜....显示的数值已经跳出三界 还没有来的及找出他们是从哪块石头里蹦出来的....
真是要好好学数学啊啊啊啊啊
今天开始捡起高数!
相关文章推荐
- [ACM] TOJ 1054 Jesse's Code (素数判断优化+全排列)
- [ACM] TOJ 1054 Jesse's Code (素数判断优化+全排列)
- 对开根号判断素数的优化
- java 判断一个数是素数(优化)
- 素数的判断及初步优化
- C语言代码1(素数判断及优化)
- 调用函数判断一个数是否为素数(传统+优化)
- [day 3]判断素数_筛选法_指定范围内2014.7.16
- [day 2]判断素数_筛选法2014.7.14
- [javascript]判断素数的无优化函数
- 求素数的优化。求任意阶乘法口诀表。判断闰年
- [ACM] TOJ 1054 Jesse's Code (素数判断优化+全排列)
- [day 0]判断素数2014.7.13
- 素数判断方法,优化平方阶
- 判断100到200之间的素数的方法的不断优化
- PAT 1096. Consecutive Factors (20) 最长连续因子乘积 ,素数判断, 连续乘积问题的幂优化
- 调用函数判断一个数是否为素数(传统+优化)
- 判断100到200间的素数的算法+优化~
- ACM常用素数判断筛选法及其优化
- 调用函数判断一个数是否为素数(传统+优化)