题目描述:
已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
一个正整数nn。
输出格式
一个正整数pp,即较大的那个质数。
输入输出样例
输入
21
输出
7
说明/提示
n\le 2\times 10^9n≤2×109
NOIP 2012 普及组 第一题
import java.util.Scanner;
// 得分60
public class 质因数分解 {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int n = sc.nextInt();
int [] a = new int[n+1];
int max =a[0];
//2n 有可能加上数组
for(int i=2;i<=n-1;i++)
{
if(n%i==0)
a[i] =i;
}
for(int i=0;i<n;i++)
{
if(a[i]>max)
max =a[i];
}
System.out.println(max);
}
}
此段代码有点太麻烦,但是好歹给了60分。
此题最重要的是怎么满分过,有点头大。
import java.util.Scanner;
public class 质因数分解 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n =sc.nextInt();
// 一个for循环 n
for(int i=2;i<=n-1;i++)
{
if(n%i==0)
{
System.out.println(n/i);
break;
}
}
}
}
代码解释:只有 n/i才能通过,sqrt,倒循环都不能满分通过(60分)。
n/i :找到最小的质因数,这样for循环遍历的次数较少,时间会少点,因为正整数n是两个不同质数的乘积,所以这样算就能找到另一个较大的了。