求大数的约数个数问题
来源:互联网 发布:为什么淘宝提问不显示 编辑:程序博客网 时间:2024/05/22 16:53
在求数字的约数的个数时,往往会用for语句实现1-n之间所有的数进行取余数从而判断是不是余数,若是,则加1,这算法行得通,但在oj平台上提交时必定会超时,因为随着n的增大,for循环语句所用的时间会越来越长。。。。
下面的程序是:判断1到根号n之间,n的约数个数,从而来确定1到n之间n的约数个数;
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int f(int d)
{int i;
int num=0;
for(i=1;i<sqrt(d);++i)
{
if(d%i==0)
num=num+1;} /*如果sqrt(d)不是整数,则约数个数为2*num,如果sqrt(d)是整数时,约数的个数为2*num+1*/
num=2*num;
int s=sqrt(d);
if(d==s*s) num++;
return num;
}
int main( )
{ int n,i;
while(scanf("%d",&n)!=EOF)
{ int *a=new int[n];
for(i=0;i<n;++i)
{ scanf("%d",&a[i]);
a[i]=f(a[i]);
}
for(i=0;i<n;++i)
cout<<a[i]<<endl;
}
return 0;
}
- 求大数的约数个数问题
- 求约数个数问题
- 求约数的个数
- 求约数的个数
- 求约数的个数
- 求约数个数最多问题
- 高效率求约数的个数
- 一道简单的求约数的个数问题
- 求N的阶乘约数的个数
- 求一个数的约数个数!
- 求一个数约数的个数
- LightOJ 1104解题报告 求大数的所有约数
- 【HUSTOJ】1034: 求约数个数
- 【小算法】求约数个数
- POJ 2992 Divisors 求组合数的约数个数
- poj1218--THE DRUNK JAILER(求约数的个数)
- 九度OJ【1187】求约数的个数
- 求两个数之间的约数和个数
- java创建启动多线程的三种方式
- 高效管理DWR中的ScriptSession,ScriptSessionLintener
- RTTI .
- Android AlertDialog去掉系统黑色背景
- IO流第一课
- 求大数的约数个数问题
- 【Java工程师之路】[2-4.1]JDBC的工作原理
- 数字格式化
- Linux进程间通信--使用命名管道
- ActiveMQ开发实例
- Nexus 安装与使用
- Android利用ViewPager实现滑动广告板
- linux 开发 OpenGL
- PHP变量作用域