题目描述
如果一个正整数分解后的的所有素因子最多只有2,3,5,7四种,则这个数称为丑数,比如,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27就是前20个丑数。请编程判断一个数是否是丑数。
输入描述
输入数据首先包含一个整数N(1<=N<=10),表示给出的正整数的个数,然后是N个32位的正整数。
输出描述
请编程输出给出的这些数中丑数的个数。
输入样例
5 2 9 11 65 100
输出样例
3
用户代码
package Sunumber;
import java.util.Scanner;
/*
auther:fjh201831064110
*/
public class SuNumber {
public static void main(String[] args) {
//输入正整数个数
Scanner sc = new Scanner(System.in);
System.out.println("请输入正整数个数N:");
int n = sc.nextInt();
//通过数组输入n个正整数
System.out.println("输入正整数n");
Scanner nb = new Scanner(System.in);
int[] b=new int[n];
for(int i=0;i<b.length;i++){
b[i]=nb.nextInt();}
//对每个正整数分解处理
int j = 0;
for(int i=0;i<n;i++) {
int num = b[i],x = 2;
//利用循环判断是否为丑数,若不为丑数,j+1
do {
if (num % x == 0) {
if (x != 2 && x != 3 && x != 5 && x != 7) {
j++;
break;
}
num = num / x;
} else {
x++;
}
}while (num>1);
}
j=n-j;
System.out.println("共有"+j+"个丑数");
}
}
功能是完成了的,只是输出样式和你的不一样,稍微改改就行了