day11.2
谁能横刀立马,唯我飞牛大将军!
今天做点题778
1.打印1000~2000之间的闰年
//打印1000-2000之间的闰年
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int main()
{
int year = 1000;
for (; year <= 2000; year++)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
printf("%d ",year);
}
}
system("pause");
return 0;
}
2.打印100~200之间的素数
方法一:常规思路
//打印100-200之间的素数
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int IsSu(int x )
{
int i = 2;
for (; i < x; i++)
{
if (x % i == 0)
{
break;
}
}
if (i < x)
{
return 0;
}
else{
return 1;
}
}
int main()
{
int a = 100;
for (; a <= 200; a++)
{
if (IsSu(a))
{
printf("%d ", a);
}
}
system("pause");
return 0;
}
方法二:被除数最少是除数的2倍
//打印100-200之间的素数
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int IsSu(int x )
{
int i = 2;
for (; i < x / 2; i++)
{
if (x % i == 0)
{
break;
}
}
if (i < x / 2)
{
return 0;
}
else{
return 1;
}
}
int main()
{
int a = 100;
for (; a <= 200; a++)
{
if (IsSu(a))
{
printf("%d ", a);
}
}
system("pause");
return 0;
}
方法三:一个数x可以看成m(大)乘以n(小),如果x可以整除n,就没必要再检测m了
//打印100-200之间的素数
#include<stdio.h>
#include<windows.h>
#include<math.h>
#pragma warning(disable:4996)
int IsSu(int x )
{
int i = 2;
for (; i < (int)sqrt(x); i++)
{
if (x % i == 0)
{
break;
}
}
if (i < (int)sqrt(x))
{
return 0;
}
else{
return 1;
}
}
int main()
{
int a = 100;
for (; a <= 200; a++)
{
if (IsSu(a))
{
printf("%d ", a);
}
}
system("pause");
return 0;
}