判断101-200之间有多少个素数,并输出所有素数。
程序分析:什么叫素数呢?除了1和本身不能被任何数整除 的数叫素数
思路:
遍历101 到200之间的每个数
//用这个数 依次被2到i-1整除
//如果能除开说明不是素数
*/
public static void fun1()
{
//遍历 101到200之间的每个数
for(int i=101;i<=200;i++)
{
//让这个i依次被2到i-1的数除,如果除开就不是素数
//定义一个标志位
boolean flag = true;//默认该数为素数
for(int j=2;j<=(i-1);j++)
{
if(i%j==0)
{
//i不是素数
flag= false;
break;
}
}
//根据flag值判断i是否为素数
if(flag)
{
System.out.println(i);
}
}
}
}
题目:“百钱买百鸡”是我国古代的著名数学题。
题目这样描述:3 文钱可以买1
只公鸡,2 文钱可以买一只母鸡,1 文钱可以买3 只小鸡。用100 文钱买100 只鸡,那么各
有公鸡、母鸡、小鸡多少只?
*/
public static void fun2()
{
//循环得出每种鸡的购买方案
for(int g=0;g<=33;g++)
{
for(int m=0;m<=50;m++)
{
for(int x=0;x<=99;x+=3)
{
//如果百钱买百鸡
if((g+m+x)==100 && (g*3+m*2+x/3)==100)
{
System.out.printf("公鸡:%d,母鸡:%d,小鸡:%d\n", g,m,x);
}
}
}
}
}
打印时钟
例如WINDOWS任务栏中的时钟
如:
23:59:57
23:59:58
23:59:59
00:00:00
00:00:01?
二、 思路提示:
一秒,一秒的走 用循环
秒大于或小于60两种情况用选择
分大于或小于60两种情况用选择
时大于或小于24(以一天24小时计算)两种情况用选择
三、 程序:
int shi=23; //定义小时
int fen=58; //定义分钟
int miao=36; //定义秒
for(int i=1;i<=300;i++)
{
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
if(shi<10)
{
System.out.print("0"+shi+":");
}
else
{
System.out.print(shi+":");
}
if(fen<10)
{
System.out.print("0"+fen+":");
}
else
{
System.out.print(fen+":");
}
if(miao<10)
{
System.out.println("0"+miao);
}
else
{
System.out.println(miao);
}
}
有8个人在一起数数,从开始当数到8的时候向回数,当数到一得时候在向下数,反复循环问50次后数到几。
二、 思路提示:
数50次 一次又一次 有次数的循环;
是正数还是反数哪? 二选一;
数到8或数1了吗? 二选一。
三、 程序:
int shu=1;
boolean sj=true; //升序降序
for (int ci=1;ci<=50 ;ci++ )
{
if(sj==true)
{
if(shu==8)
{
shu=7;
sj=false;
}
else
{
shu++;
}
}
else
{
if(shu==1)
{
shu=2;
sj=true;
}
else
{
shu--;
}
}
System.out.println(ci+":"+shu);
}
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项信息。
程序分析:请抓住分子与分母的变化规律。
*/
public static void main(String[] args) {
int fm=1;
int fz=1,m=fm;
for(int i=1;i<=20;i++)
{
fz=m+fm;
fm=m;
m=fz;
System.out.println("第"+i+"项为:\t"+fz+"/"+fm);
}
}
圆周率问题:【2011全国编程大赛高中组初赛题】
中国古代数学家研究出了计算圆周率最简单的办法:
PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17......
这个算式的结果会无限接近于圆周率的值,我国古代数学家祖冲之计算出,圆周率在多少
3.1415926 和3.1415927 之间,请编程计算,要想得到这样的结果,他要经过多少次加减法运
while(!(pai>=3.1415926 && pai<=3.1415927))
{
向PI上累计加减
//符号 取反
//分母 +2
}
*/
public static void fun2()
{
//定义一个变量表示圆周率
double pai =0;
//定义一个变量表示分母
double fm =1;
//定义一个变量表示符号
boolean flag = true;//true表示是正号
//定义一个计数器
int cs=0;
while(!(pai>=3.1415926 && pai<=3.1415927))
{
if(flag)//加号
{
pai+=4/fm;
}
else
{
pai-=4/fm;
}
//分母+2
fm+=2;
//符号取反
flag = !flag;
//次数++
cs++;
}
System.out.println("经过"+cs+"运算之后!");
}
}
* 年龄问题:
* 小兵13岁 大兵36 岁问多少年之后大兵的年龄恰恰是小兵年龄的2倍
* 分析:
* 很明显我不知道循环次数
* 这是循环
* while(大兵!=小兵*2)
* {
*
* }
*
*/
public static void fun1()
{
int daAge =36;
int xiaoAge =13;
//计数器
int year=0;
while(xiaoAge*2 != daAge)
{
//长年龄
xiaoAge++;
daAge++;
year++;
}
System.out.println(year+"年之后大兵年龄是小兵的2倍");
}
* 卖血问题:
* 假设你的女友跟说你有100000我就嫁给你
* 现在输入你的存款数 如果不够就去卖血卖一次赚 300元
* 问卖血多少才能抱得美人归
*/
public static void fun3()
{
//得到你的存款数
Scanner scann = new Scanner(System.in);
System.out.println("请输入你的存款数:");
int ck = scann.nextInt();
//声明一个计数器记录卖血的次数
int cs =0;
//只要你的存款不足100000就一直卖
while(ck<100000)
{
//卖血次数++
cs++;
//存款300
ck+=300;
}
System.out.printf("卖血%d次存款%d",cs,ck);
}
/**
* 卖血问题:
* 假设你的女友跟说你有100000我就嫁给你
* 现在输入你的存款数 如果不够就去卖血卖一次赚 253元
* 要求你至少为爱情卖血一次
* 问卖血多少才能抱得美人归
* do{}while();
*/
public static void fun4()
{
//得到你的存款数
Scanner scann = new Scanner(System.in);
System.out.println("请输入你的存款数:");
int ck = scann.nextInt();
//声明一个计数器记录卖血的次数
int cs =0;
//只要你的存款不足100000就一直卖
do
{
//卖血次数++
cs++;
//存款+253
ck+=253;
}
while(ck<100000);
System.out.printf("卖血%d次存款%d",cs,ck);
}
蛤蟆在井底,井深10米。白天蛤蟆向上爬5米,晚上蛤蟆下滑了4米。打印每天白晚蛤蟆的高度。
?
二、 思路提示:
一天一天的爬,循环。
不知道用几天,至少要1天。用什么循环语句?
白天爬,晚上滑,两种情况占一种。
?
三、 程序:
//变量初始值
int gao=0; //蛤蟆的高度
boolean bw=true;//白天:true 晚上:false
do
{
//白爬晚滑
if(bw)
{
gao=gao+5;
bw=false;
}
Else
{
gao=gao-4;
bw=true;
}
//打印高度
System.out.println(gao);
}
while(gao<10);//每当 (满足条件 高度不到10米);
求21的平方根;?
二、 思路提示:
对开方进行正向理解可以得
//总有一个整数最接近要开方的数;
1,2,3,4,5,6,7…..
//假设最接近要开方的数是2,总有一个小数接近开方的数。
2.1,2.2,2.3,2.4----2.9
//依次找下去总一个精度是我们需要的。
2.21,2.22,2.23,2.24---2.29
…………………………………………..
如分析可以一层又一层布知道多少层 但至少要一次用什么循环。?
三、 程序:
double jie=0.0;
do
{
jie=jie+0.0001;
}
while (jie*jie<21);
System.out.println(jie);