快速计算正整数N的因子个数:
#include <iostream>
using namespace std;
int f(int n) //计算并返回正整数n的因子个数
{
int ans = 0;
for (int i = 1; i * i <= n; i++)
{
if (n % i == 0)
{
ans++;
if (i * i != n) ans++;
}
}
return ans;
}
int main()
{
int N = 0;
cin >> N;
cout << f(N) << endl;
return 0;
}
相关例题:
给定正整数 N,求一共有多少组 (A,B,C) 满足 A×B+C=N。
其中 1≤A,B,C≤N 且为正整数,注意 (1,2,1) 和 (2,1,1) 不相同。
时间限制:300ms
输入:
一行,一个正整数 N (1≤N≤106)。
输出:
一行,一个整数,表示答案。
输入样例1:
3
输出样例1:
3
输入样例2:
100
输出样例2:
473
题解:
C语言实现:
#include <stdio.h>
int main(void)
{
int N = 0, i = 0, ans = 0;
scanf("%d", &N);
while (N--)
{
for (i = 1; i * i <= N; i++)
{
if (N % i == 0)
{
ans++;
if (i * i != N) ans++;
}
}
}
printf("%d\n", ans);
return 0;
}
更快的算法:
#include<stdio.h>
int main(void)
{
int i,n,ans=0;
scanf("%d",&n);
for(i=1; i<n; i++)
{
ans+=n/i;
if(n%i==0)
ans--;
}
printf("%d",ans);
}