0
已解决
许金夫
初级天翼
初级天翼
5334 质因数分解经验值:800
题目描述 Description
已知正整数 nn 是两个不同的质数的乘积,试求出较大的那个质数。
输入描述 Input Description
输入只有一行,包含一个正整数 nn。
输出描述 Output Description
输出只有一行,包含一个正整数 pp,即较大的那个质数。
样例输入 Sample Input
21
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
对于 30\%30% 的数据,n\le 1000n≤1000;
对于全部数据,6\le n\le 2\times 10^96≤n≤2×109。
超了,60分
#include <bits/stdc++.h>
using namespace std;
bool cmp(int x){
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return false;
return true;
}
int main(){
int n;
cin>>n;
for(int i=n;i>=sqrt(n);i--){
if(n%i==0&&cmp(i)==1){
cout<<i;
return 0;
}
}
return 0;
}
0
已采纳
徐子玄
初级光能
初级光能
用不着埃氏筛!!1439做了吗??一模一样!
第一步,求出输入的n的最小质因数!(最小质因数总比最大质因数找得快,要用到函数:
int prime(int n) {
for(int i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
})
第二步:变量i循环2~n,判断如果是质数,输出n除以i的值。
望采纳!
0
刘乐宸
新手天翼
新手天翼
- while(n!=1)
- {
- for(int i=2;i<=n;i++)
- {
- if(n==i)
- {
- cout<<i;
- n=n/i;
- break;
- }
- if(n%i==0)
- {
- cout<<i<<"*";
- n=n/i;
- break;
- }
- }
-
while(n!=1) { for(int i=2;i<=n;i++) { if(n==i) { cout<<i; n=n/i; break; } if(n%i==0) { cout<<i<<"*"; n=n/i; break; } }
埃氏筛
0
0