猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,
还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,
又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。
到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
说实话,这个题目着实让我吓了一跳啊,真的,初次看见还以为挺难的,但是编了一下
答案就出来了,让我吃了一惊,这个题目的关键点就是:上一次的桃子总数=2*(剩余桃子总数 + 1)
代码如下:
#include<stdio.h>
int main()
{
int N,i;
scanf("%d",&N);
int last=1,first=1;
for(i=1;i<N;i++)
{
first=2*(first+1);
}
printf("%d",first);
return 0;
}
用简单素数筛选法求N以内的素数。
这道题首先你要明白什么是素数:一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。如2,3,5,7,11,13,17…。
所以对一个数N:N%2!=0
N%3!=0
N%4!=0
……
N%(N-1)!=0
即可
上面的条件中只要有一个不满足就不是素数
代码如下:
#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
int i,j,f=0;//f为下标,默认都是素数
for(i=2;i<=N;i++)
{
f=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{
f=1;
continue;//当有一个条件不满足时,内循环就停止,不必再循环了
}
}
if(f==0) //判断下标,是否是素数,是,则输出
{
printf("%d\n",i);
}
}
return 0;
}