#include <stdio.h>
/*
//求100-200素数的个数与和
int main(){
int i = 0;
int count = 0;
int sum = 0;
for(i = 100; i <= 200; i++)
{
int flag = 1;//flag为1,表示是素数
int j = 0;
//判断i是否为素数,是就打印,偶数一定不是素数,所以减1减少运行时间
for(j = 2; j <= i - 1; j++)//for循环中间的表达式是核心算法 i - 1 进入循环的数一直保持为奇数
{
if(i % j == 0) //能被整除表明不是素数
{
flag = 0;
break;
}
}
if(flag == 1)
{ count++;
sum +=i;
printf("%d\n",i);
}
}
printf("素数的个数为:%d个\n",count);
printf("素数的和为:%d\n",sum);
return 0 ;
}*/
//函数调用写法
/*
int is_prime(int n)
{
int j = 0;
for(j = 2; j <= sqrt(n); j++)//最优解 取n的平方数 是偶数的肯定不是素数(不懂,记住就好,以后就会了)
{
if(n % j == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int i = 0 ;
int count = 0;
int sum = 0;
for(i = 100; i <= 200; i++)
{
if(is_prime(i))
{
printf("%d\n",i);
sum += i;
count++;
}
}
printf("素数的个数为:%d个\n",count);
printf("素数的和为:%d\n",sum);
return 0;
}*/
//算1000 - 2000的闰年
/*
int main()
{
int year = 0;
int count = 0;
for(year = 1000; year <= 2000; year++)
{
if((year % 4 == 0) && (year % 100 != 0)||(year % 400 == 0))
{
count++;
printf("%d\n",year);
}
}
printf("闰年的个数是:%d",count);
return 0;
}*/
//函数调用写法
/*
int is_leap_year(int n)
{
if((n % 4 == 0) && (n % 100 != 0) || (n % 400 == 0))
{
return 1;
}
return 0;
}
int main()
{
int year = 0;
int count = 0;
for(year = 1000; year <= 2000; year++)
{
if(is_leap_year(year))
{ count++;
printf("%d\n",year);
}
}
printf("闰年的个数为:%d",count);
return 0;
}*/
//二分法函数调用
int binary_search(int arr[],int k, int sz)
{
int left = 0;
int right = sz -1;
while(left <= right)
{
int mid = left + (right - left) / 2;
if(arr[mid] < k)
{
left = mid + 1;
}
else if(arr[mid] > k)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{ int arr[] = {1,2,3,4,5,6,7,8,9,20};
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr , k, sz);
if(ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了下标为:%d\n",ret);
}
return 0;
}