统计1到N的整数中,除了1和自身之外,至少还能被两个数整除的数的个数。
package test;
import java.util.Scanner;
public class test{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt(),tmp,ans=0;
int ary[]=new int[n+1]; //枚举法记录第n个数是不是能被2个数整除
for(int i=2;i<=n;i++){ //逆向思维,两数相乘的结果是能被2个数整除的
for(int j=2;j<=n;j++){
if(i==j) continue; //不包含两数相等情况
tmp=i*j;
if(tmp>n) break;
if(ary[tmp]!=1){
ary[tmp]=1; //tmp可以被2个数整除
}
}
}
for(int i:ary){
if(i==1){
ans++; //遍历数组
}
}
System.out.print(ans);
}
}