问题标题: 酷町堂:3832

0
0
已解决
许雨航
许雨航
初级守护
初级守护

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,f=0;
    cin>>n;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0){
            for(int j=2;j<=sqrt(n/i);j++){
                if(n/i%j!=0){
                    f=1;
                    continue;
                }
            }
            if(f==1){
                cout<<n/i;
                return 0;
            }
            else{
                f=0;
                continue;
            }
        }
    }
    cout<<n;
    return 0;

哪里错了??


0
已采纳
张帆
张帆
中级天翼
中级天翼

你还是先定义一个判断质数的函数,这样清晰点

然后,不用太复杂,你写的我看的有点晕

我是这样写的:

1.判断n是否为质数,如果是,输出n,return 0,否则,进入第二步

2.循环n-1到1如果n%i==0&&zs(i)==1输出i

 

😀

0
0
徐润扬
徐润扬
高级守护
高级守护

加一个函数来判断质因数

int qe(int a)
{
    if(a==1)return 0;
    for(int i=2;i<=sqrt(a);i++)
    {
        if(a%i==0)
        {
            return 0;    
        }
    }
    return 1;
}

0
王泽宇
王泽宇
初级光能
初级光能

if(zs(a)==0){
        cout<<a;
    }
    else{
        for(int i=2;i<a;i++){
            if(a%i==0&&zs(i)==0){
                maxn=i;
            }
        }
        cout<<maxn;
    }
    return 0

zs()为判断质数

我要回答