------- android培训、java培训、期待与您交流! ----------
package com.itheima;
import java.util.Scanner;class GetPrimeNumber {
/**
* @param args
*
* 1. 打印输出一百以内的素数的累加和...
* 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
* 数组: 2 5 9 10 48 95 154 31 59 69
* 3.手动输入一个自然数N,反向打印N行杨辉三角。
*/
private static int sum = 0;//定义全局变量素数和 sum
private static int arr[]={2,5,9,10,48,95,154,31,59,69};//定义并初始化数组
private static int rownum = 0;//定义杨辉三角的行数rownum
public static void main(String[] args) {
// TODO Auto-generated method stub
getPrimeNumSum();//获取100以内的素数累加和
printNewNum();//重新排列输出printTriangle();//反向打印杨辉三角
}private static void getPrimeNumSum()
{
for(int i=2;i<100;i++)
{
if(i == 2 || i==3)//将2、3 两个特殊的数单列出来
{
System.out.println(i+"是素数");
sum += i;
}
for(int j=2;j<Math.sqrt(i);j++)
{
//如果除了1和它本身两个约数外,还有别的约数,那么这个数就不是素数
if(i%j==0 )
{
break;
}
//如果除了1和它本身两个约数外,没有别的约数,那么这个数就是素数
//加上j> Math.sqrt(i)-1)是为了限制计算和打印只进行一次
else if((i%j != 0) && (j > Math.sqrt(i)-1) )
{
System.out.println(i+"是素数");
sum += i;
}
}
}
System.out.println("100以内的素数之和是:"+sum);
}
// 数组: 2 5 9 10 48 95 154 31 59 69
private static void printNewNum()
{
for(int k = 0;k < arr.length;k++)//判别数据是否是素数,并将数组中的素数改变为0
{
if(arr[k]==2 || arr[k]==3)
{
arr[k] = 0;
}
else
{
for(int kk = 2;kk <Math.sqrt(arr[k]);kk++)
{
if(arr[k] % kk == 0)//如果有其他约数,则跳出循环
break;
else if(arr[k]%kk !=0 && kk>Math.sqrt(arr[k])-1)//如果是素数,则将其数值修改为0
arr[k] = 0;
}
}
}
for (int ii = 0;ii<arr.length;ii++)//打印数据
for(int jj = 0 ;jj <=ii ;jj++)
if(jj == ii)
System.out.println(arr[ii]);//对角线形式打印并换行
else
System.out.print(" ");//打印空格
}
private static int getRow()
{
Scanner sc = new Scanner(System.in);// 获取输入数字
try
{
rownum = sc.nextInt();
while(rownum<1)//数据合法性判断
{
System.out.println("输入的数据大小不合法,请重新输入:");
rownum = sc.nextInt();
}
}
catch(Exception e)
{
System.out.println("输入数据不合法,出现异常:"+e.toString());
System.out.println("请重新输入一个正整数:");
getRow();
}
return rownum;
}
//反向打印杨辉三角 组合数开始结束部分采用定义的格式打印1 中间部分采用定义的方法计算出相应的数值并打印出来
//利用组合的知识计算杨辉三角的取值,并按照题目要求实现反向打印出结果
private static void printTriangle(){
System.out.println("请输入杨辉三角的行数:");
rownum= getRow();
//System.out.println(rownum);
for(int row = 1;row < rownum+1 ;row++)
{
for(int col=1;col<=2*rownum-row ;col++)
{
if(row == 1 && col%2 == 0)
{
System.out.print(" ");
continue;
}
else if(col == row || col == 2*rownum-row)//每行的开始、结束部分都是1
{
System.out.print(1);
continue;
}
else if (col>row && col <2*rownum-row && (col-row) %2 == 0 )
{
if((rownum-row-(col-row)/2)>=0 && (col-row)/2>=0)
{
int numerator =getFactorial(rownum-row);//求分子
int denominator = getFactorial(rownum-row-(col-row)/2)*getFactorial((col-row)/2);//求分母
System.out.print(numerator/denominator);
continue;
}
}
else
System.out.print(" ");打印空格
}
System.out.println();
}
}
private static int getFactorial(int n)//求n的阶乘
{
if(n==1 || n==0)
return 1;
else if(n>1)
return(n* getFactorial(n-1));
else
System.out.println("参数有误!");
return -1;
}
}