一.埃氏筛法求素数
思想:将2到n范围内的整数写下来,其中2是最小的素数。将表中所有的2的倍数划去,表中剩下的最小的数字就是3,它不能被更小的数整除,所以3是素数。再将表中所有的3的倍数划去……以此类推,如果表中剩余的最小的数是m,那么m就是素数。然后将表中所有m的倍数划去,像这样反复 *** 作,就能依次枚举n以内的素数,这样的时间复杂度是O(nloglogn)。
1.要设置两个数组
int prime[maxn]; //保存素数
int is_prime[maxn]={0}; //is_prime判断是否为素数,元素全部赋值为0为了标志。
1:标志着这个数是i的倍数。
2.Find_prime里的 *** 作:
1)int p=0为prime[]数组的下标
2)for循环从i=2开始,进去时要判断is_prime[i]是素数(即is_prime[i]==0),
是则保存到prime[p]=i;
紧接着for循环(j=2*i;j 3.输入的数不包括0(例:1——100) 代码完全一样!自己取prime[0]={0,......} 二.快速排序 1.思想:每次排序的时候设置一个基准点(选择最左边的第一个数字),将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。 2.注意: 1)必须有递归的边界条件,否则跳不出函数!! 2)当基准数选择最 左 边的数字时,那么就应该先从 右 边开始搜索 【因为最后要停在数值小的i上,然后与基准数交换。如果先从左边搜索,最后i==j时停在比基准数大(因为右边是搜索大于基准数的数)的位置,再基准数交换,这样数值大的i就被放在前面了】 3.对比冒泡排序法、选择排序法 1)冒泡排序法:相邻元素两两比较,每次可确定一个最值。 2)选择排序法:每趟选出一个最值,确定其在结果序列中的位置 四.将M进制的数X转换为N进制输出 三.给出年分m和一年中的第n天,算出第n天是几月几号 1.闰年判定:能被400整除,或者能被4整除但不能被100整除。 if( year%400==0 || (year % 4 == 0 && year % 100 != 0) ) 闰年平年区别:闰年2月份有29天,平年2月份28天。 2.c++中不能遍历enum中的所有值。 要遍历所有值,首先想到用数组 欢迎分享,转载请注明来源:内存溢出int Find_prime()
{
int i,j;
int p=0;//p为prime[]数组的下标
for(i=2;i
#include
#include
for(i=1;i
for(i=0;i
#include
#include
评论列表(0条)