/*500~1000内4或7的倍数但不是4和7的公倍数之和
for(int i=500;i<=1000;i++)
{
if((i%4==0&&i%7!=0)||(i%4!=0&&i%7==0))
{
System.out.println(i);
}
}*/
/*1000~2000内素数的个数
int j=0;
for(int i=1000;i<=2000;i++)
{
boolean b=true;
for(int k=2;k<=i/2;k++)
{
if(i%k==0)
{
b=false;
break;
}
}
if(b==true) j++;
}
System.out.println(j);
*/
/*“水仙花的个数
int i=0;
for(int a=100;a<1000;a++)
{
int b1,b2,b3;
b1=a/100;
b2=(a-b1*100)/10;
b3=a%10;
if(a==b1*b1*b1+b2*b2*b2+b3*b3*b3)
i++;
}
System.out.println(i);
*/
/*x和y的最大公约数和最小公倍数
Scanner s=new Scanner(System.in);
int t,n;
System.out.print("输入第一个数");
int x=s.nextInt();
System.out.print("输入第二个数");
int y=s.nextInt();
if(x<y)
{
n=y;
}
else
{
n=x;
}
while(!(n%x==0&&n%y==0))
{
n++;
}
t=x*y/n;
System.out.println("x和y的最大公约数:"+t);
System.out.println("x和y的最小公倍数:"+n);
*/
/*个数如果恰好等于它的因子之和,找出1000以内的所有的“完数”
System.out.println("1000以内的完数");
int b=0;
for(int i=1;i<=1000;i++)
{
int [] s=new int[500];
int j=0,d=0;
for(int m=1;m<i;m++)
{
if(i%m==0)
{
s[j++]=m;
}
}
for(int k=0;k<j;k++)
d+=s[k];
if(i==d) System.out.println(i);
}
*/
/*每个月的兔子的数量
int s=0,t=0,j;
for(int i=1;i<=3;i++)
System.out.println("第"+i+"月的兔子数量:"+"2");
//for(int m=4;m<=30;m++)
for(int k=4;k<=30;k=k+3)
{
for( j=3;j<=30;j=j+3)
{
if(k>j)
{
s+=(k-j)*2;
s=s+2;
}
}
System.out.println("第"+k+"月的兔子数量:"+s);
for(int m=k+1;m<k+3;m++)
{
t=s+(m-k)*2;
System.out.println("第"+m+"月的兔子数量:"+t);
}
}
*/
求100的阶乘
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a=new int[200];
int[] b=new int[200]; //a中每个元素存储阶乘计算结果一位数,b用作进位换算
int i,k;
//数组初始化
for(i=0;i<200;i++){
a[i]=0;
b[i]=0;
}
//将a[0]重新初始化为1
a[0]=1;
//阶乘计算循环
for(k=1;k<=100;k++){
//按位乘法循环
for(i=0;i<200;i++){
b[i]=a[i]*k;
}
//进位换算循环
for(i=0;i<199;i++){
b[i+1]=b[i+1]+b[i]/10;
}
//求得数组中的每一个新的元素,即第k次阶乘后的值
for(i=0;i<200;i++){
a[i]=b[i]%10;
}
}
//找出数组中第一个不为零的数
for(i=199;i>=0;i--){
if(a[i]==0)
i--;
if(a[i]!=0)
break;
}
for(;i>=0;i--)
System.out.print(a[i]);
}