下面有一些数 请看:
1 4 9 16 25
这些数在数学上叫完全平方数。可能有些人不知道什么叫完全平方数。接下来让我来介绍完全平方数。
若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的项有两个。
sqrt函数又是什么呢?
sqrt函数在数学上叫作开方。
如 4开方等于2 9开方等于3
在编程上如果要用到sqrt函数要这么写 sqrt(n)
而在编程里往往需要用到sqrt函数 如这题
给你一个整数N,求它的所有因数的和。比如N=12,和为1+2+3+4+6+12=28。
输入格式
只一行,一个整数N。(1≦N≦2,000,000,000)
输出格式
只一行,一个整数:N的所有因数之和。
输入/输出例子1
输入:
12
输出:
28
样例解释
无
如果用下面方法
#include<bits/stdc++.h>
using namespace std;
int n,s=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
if(n%i==0)s=s+i;
}
cout<<s;
return 0;
}
这种暴力枚举拿不到满分,这时候你要想一个因数找到一个那就可以找着另外一个因数所以只需找他的开方所以只需改一下。
#include<bits/stdc++.h>
using namespace std;
int n,s=0;
int main(){
cin>>n;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
s=s+i;
s=s+n/i;
}
}
cout<<s;
return 0;
}
但这样做不能满分如果n是完全平方数呢?那就要多加一个判断。
#include<bits/stdc++.h>
using namespace std;
int n,s=0;
int main(){
cin>>n;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
s=s+i;
s=s+n/i;
}
if(i*i==n)
s=s-i;
}
cout<<s;
return 0;
}
这样这个程序就可以满分了。
下次想让我写什么函数尽管评论