打印1000-2000间的闰年
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;//计算一下总共有多少个闰年
for (i = 1000; i <= 2000; i++)
{
if (i % 4 == 0)
{
if (i % 100 != 0)
{
printf("%d ", i);
count++;
//每打印一次就记一个数
}
}
if (i % 400 == 0)
{
printf("%d ", i);
count++;
//每打印一次就记一个数
}
}
printf("\n共闰年count=%d\n", count);
//要在for循环外面打印
//第一个的\n是用来把printf开始在新的一行,第二个的\n是打印完后换行。
return 0;
}
或
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1000; i <= 2000; i++)
{
if (((i % 4 == 0) && (i % 100 != 0)) || i % 400 == 0)
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d\n", count);
return 0;
}
打印100-200之间的素数
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 2;
for (j = 2; j < i; j++)
//素数就是质数,只有1或它自身才能整除
//那么它不能被整除的范围就是“2到i-1”之间
//在这个范围内如果i是素数,就不会被整除
//j就在“2到i-1”这个范围内
{
if (i % j == 0)
{
break;
//如果i可以整除j,就说明i不是素数
//就要跳出这个for循环
}
}//出这个循环有两种情况:1.i不是素数用break跳出
//2.i在for (j = 2; j < i; j++)这个循环里没有被整除,
//直到j自己慢慢加,使得j=i,自动跳出循环
if (i == j))//要跳出for(j=2;j<=sqrt(i);j++)循环之后判断若在这个循环里就会出现重复打印
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d\n", count);
return 0;
}
或者
#include <math.h>
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i+=2)//因为偶数都可以除以2,所以偶数不是素数
{
int j = 0;
int flag = 1;//表示假设i为素数
for (j = 2; j <= sqrt(i); j++)
//比如m=a*b,那么a,b之间必定至少有一个数<=sqrt(m)
// 如5*6=30,5<sqrt(30)。i=j*某个数
// 这里为什么要是j<=sqrt(i),因为j是从2(最小的数开)慢慢加的
//sqrt是开平方的函数,头文件是#include<math.h>
{
if (i % j == 0)
{
flag = 0;//当满足i%j==0时,i就不是素数,那么flag就为假
break;// 跳出for(j = 2; j <= sqrt(i); j++)循环
}
}
if (flag==1)
//要跳出for(j=2;j<=sqrt(i);j++)循环之后判断,
//若在这个循环里就会出现重复打印
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d\n ", count);
return 0;
}