求 质因数的个数

如何 快速求一个数的质因数的个数

    for(int i = 1; i <= 1000000; i++) cnt[i] = 2;
    cnt[1] = 1;
    for(int i = 2; i <= 1000000; i++){
        for(int j = i+i; j <= 1000000; j += i) cnt[j]++;
    }

原文地址:https://www.cnblogs.com/ccut-ry/p/8409965.html

时间: 2024-09-30 14:38:34

求 质因数的个数的相关文章

题目1207:质因数的个数

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7367 解决:2406 题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. #include <iostream> #

九度oj 题目1207:质因数的个数

题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. 这个题着实费了我一番功夫,开始一直在纠结需要去判断每一个被除数是不是质数,需要一个个的去遍历质数才能得到答案,但每一次这样判断结果必然超时

九度OJ 1207 质因数的个数 (筛素数,勉强AC)

1 秒 内存限制:32 兆 特殊判题:否 提交:4466 解决:1375 题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. 来源: 2007年清华大学计算机研究生机试真题 若测试完2到10

1207.质因数的个数

题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. #include<iostream> using namespace std; bool mark[100001]; int

欧拉计划013(ProjectEuler013):求出10个数乘积最大的

申明:之前的所有欧拉计划都是用python来写的,的确python来写,代码量极少,学习起来也很方便.但是最近为了找java工作,所以用Java来完成欧拉计划的题,来复习一下Java. Large sum Problem 13 Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. 371072875339021027987979982208375902465101357402

hdu2852--KiKi&#39;s K-Number(线段树,求第k个数)

KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2546    Accepted Submission(s): 1174 Problem Description For the k-th number, we all should be very familiar with it. Of course,t

一串数字中有两个只出现一次的数字其余都是成对相同,求这两个数

当然如果这个问题是只有一个不同的数,其他数字成对相同,那么就是把所有数字异或就得出这个数了 这次是有两个只出现一次的数字,其他数字都成对相同 1)先把所有数都异或得到数t 2)算出t的二进制第一个1的位置flag 3)将所有数根据二进制flag位置是否为1分成两组b1[],b2[] (此时每组数字的个数一定是奇数) 4)将b1组异或得到ans1,将b2组异或得到ans2 #include<iostream> #include<stdio.h> using namespace std

编程题:指针变量,实参与形参的引用。已知一个一维数组,求其中前n个数的和。n由键盘输入。

#include<stdio.h> int sum(int *q,int n) { int i,s=0; for(i=0;i<n;i++,q++) s+=*q; return s; } void main() { int num,a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=a; scanf("%d",&num); printf("%d\n",sum(p,num)); } 编程题:指针变量,实参与形参的引用.已知

编程题:已知一个一维数组,求其中前n个数的和。n由键盘输入

#include<stdio.h> int sum(int array[],int n) { int i,s=0; for(i=0;i<n;i++) s+=array[i]; return s; } void main() { int num,a[10]={1,2,3,4,5,6,7,8,9,10}; scanf("%d",&num); printf("%d\n",sum(a,num)); } 编程题:已知一个一维数组,求其中前n个数的和.