一、素数
1.从2到n-1之间依次检查是否有n的因数
题目:判断一个数是否是素数
bool Isprimer(int n)
{
for(int i=2;i<n;i++)
{
if(n % i==0)
{
return false;
}
}
return true;
}
int main()
{
int a;
if(Isprimer(10))
{
printf("true\n");
}
else
{
printf("false\n");
}
return 0;
}
2.筛选法求1到n之间的素数(使用数组标记)
题目:用筛选法求100之内的素数
# define N 100
void Isprimer(int *arr)
{
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
{
if(arr[i] !=0 && arr[j] % arr[i] == 0)
{
arr[j]=0;
}
}
}
}
int main()
{
int arr[N];
for(int i=0;i<N;i++)
{
arr[i]=i;
}
arr[0]=0;
arr[1]=0;
Isprimer(arr);
for(int i=0;i<N;i++)
{
if(arr[i] != 0)
{
printf("%d ",arr[i]);
}
}
return 0;
}
二、排序算法
1.冒泡法排序
冒泡法是相邻的两个数两两比较,每趟循环都将最大的数字沉下去(即放在最后)。
题目:对10个整数进行排序
#define N 10
void Sort(int *arr,int n)
{
int i;
int j;
int tmp;
for(i=0;i<n-1;i++)//进行n-1次循环
{
for(j=0;j<n-1-i;j++)//内层比较
{
if(arr[j] > arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
int main()
{
int arr[N]={4,6,7,3,6,8,9,6,5,3};
Sort(arr,N);
for(int i=0;i<N;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
2.选择法
选择法是用K标记最值,将最值逐一与其他数字比较
题目:用选择法对10个整数排序
#define N 10
void SeleteSort(int *arr,int n)
{
int i;
int j;
int tmp;
int mink;//保存最小值
for(i=0;i<n-1;i++)
{
mink=i;//使最小值的下标为当前i的位置
for(j=i+1;j<n;j++)
{
if(arr[mink]>arr[j])
{
mink=j;//一次循环确定最小值下标
}
}
if(mink != i)//若最小值下标不是i,则交换其内容,将最小值放于首位
{
tmp=arr[mink];
arr[mink]=arr[i];
arr[i]=tmp;
}
}
}
int main()
{
int arr[N]={4,6,7,3,6,8,9,6,5,3};
SeleteSort(arr,N);
for(int i=0;i<N;i++)
{
printf("%d ",arr[i]);
}
return 0;
}