求1~n之间的所有平方数O(sqrt(n))

原理

要求1~n之间的所有平方数,只需在1~\sqrt{n}之间找即可,因为1~n之间的平方数的平方根必定在1~\sqrt{n}之间,例如1~81之间的平方数有1,4,9,16,25,36,49,64,81;而它们的平方根分别为1,2,3,4,5,6,7,8,9都在1~\sqrt{81}之间。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,lim,ret=0;
    cin>>n;
    lim=sqrt(n);
    for(int i=1;i<=lim;i++){
        if(i*i<=n) ret++;
    }
    cout<<ret<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_55126913/article/details/130379751