精华内容
下载资源
问答
  • 输入一个整数,输出它的所有素因子 例如: 15 = 3 * 5 18 = 2 * 3 * 3 #include<iostream> #include<vector> #include<cmath> //打印出一个整数所有素因子,不会超时 using namespace std; void...

    输入一个整数,输出它的所有素因子
    例如:

    15 = 3 * 5
    18 = 2 * 3 * 3
    
    #include<iostream>
    #include<vector>
    #include<cmath>
    //打印出一个整数的所有素因子,不会超时
    using namespace std;
    void func(int n, vector<int> arr) {
     int k = (int)sqrt(n);
     int m = n;
     int i;
     for (i = 2; i <= k; i++) {
      if (n % i == 0) {
       while (n % i == 0) {
        arr.push_back(i);
        n /= i;
       }
      }
     }
     if (n != 1) {
      arr.push_back(n);
     }
     cout << m << ' ' << '=' << ' ' << arr[0];
     for (i = 1; i < arr.size(); i++) {
      cout << ' ' << '*' << ' ' << arr[i];
     }
    }
    int main() {
     int n = 0;
     cin >> n;
     vector<int> arr;
     func(n, arr);
     return 0;
    }
    展开全文
  • 1.JAVA实现正整数素因子分解。 比如:60=2*2*3*5 。 代码块如下 import java.util.Scanner; /** * @kilimy */ public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner...

    1.JAVA实现正整数的素因子分解。

    比如:60=2*2*3*5 。
    代码块如下
    
    import java.util.Scanner;
    /**
     * @kilimy
     */
    public class Demo1 {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		System.out.println("输入正整数n");
    		int num = sc.nextInt();
    		System.out.print(num + "=1");
    		int i = 2;
    		do {
    			if (num % i == 0) {
    				System.out.print("*" + i);
    				num = num / i;
    			} else {
    				i++;
    			}
    		} while (num > 1);
    	}
    }
    

    输出结果如下:

    输入正整数n
    90
    90=1* 2* 3* 3* 5

    展开全文
  • 将正整数n分解为其素因子的乘积,其中n>=2并且在int范围内。Solution类的数据成员n代表需要分解的正整数,构造函数完成对数据成员n的初始化,声明了成员函数solve()实现对n的分解。请根据样例输出实现成员函数。...

    将正整数n分解为其素因子的乘积,其中n>=2并且在int范围内。Solution类的数据成员n代表需要分解的正整数,构造函数完成对数据成员n的初始化,声明了成员函数solve()实现对n的分解。请根据样例输出实现成员函数。注意输出时每行最后一个数字后面没有空格。

    裁判测试程序样例:

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    class Solution {
    public:
        Solution(int num) {
            n = num;
        }
        void solve();//将n分解为素因子的乘积
    private:
        int n;
    };
    
    int main()
    {
        int n;
        while (cin >> n) {
            Solution obj(n);
            obj.solve();
        }
        return 0;
    }
    //你的代码将被嵌在这里
    

    输入样例:

    2
    3
    13
    24
    36
    1024
    65535

    输出样例:

    2=2
    3=3
    13=13
    24=2*2*2*3
    36=2*2*3*3
    1024=2*2*2*2*2*2*2*2*2*2
    65535=3*5*17*257

     下面是答案代码(要考试了,复习来看了看,发现没有注释,就把注释加了):

    int Peri(int n){                            //先定义一个判断素数的函数 
    	if(n==2){
    		return 1;
    	}
    	int flag = 0;
    	for(int i = 2;i<n/2;i++){
    		if(n%i==0){
    			flag = 1;
    			return 0;
    			
    		}	
    	}
    	return 1;	
    }
    
    void Solution::solve(){
    	int m = n,flag = 0,flag1=0;                       //定义m获取n的值,flag用来关联第一个因子,flag1用来关联i的增值 
    	cout<<n<<"=";
    	if(Peri(n)){
    		cout<<n;
    	}
    	else{
    		for(int i = 2;i<m/2;){
    			if(!flag){
    				if(Peri(i)&&n%i==0){
    				cout<<i;
    				flag = 1;
    				flag1 = 1;
    				n /= i;
    			}
    			    else{
    				flag1 = 0;
    			}
    			}
    			else{
    				if(Peri(i)&&n%i==0){
    					cout<<"*"<<i;
    					flag1 = 1;
    					n /= i;
    				}
    				else{
    					flag1 = 0;
    				}
    			}
    			if(!flag1){
    				i++;
    			}
    			
    		}
    	}
    	cout<<endl;
    }

    展开全文
  • 思路分析 ...同样的方法,可以求整数素因子,并且更加简单。 代码如下 代码分析见注释 #include<iostream> using namespace std; #define max_n 1000000 int prime[max_n + 5] = {0}; int...

    思路分析

    • 在前面的文章中分析了求整数的约数个数,方法是利用了约数定理,在线性筛筛选素数的过程中对约数个数的数组进行标记。
    • 同样的方法,可以求整数的素因子,并且更加简单。

    代码如下

    代码分析见注释

    #include<iostream>
    using namespace std;
    
    #define max_n 1000000
    int prime[max_n + 5] = {0};
    int f[max_n + 5] = {0};
    
    void init() {
        for (int i = 2; i <= max_n; ++i) {
            if (!prime[i]) {
                prime[++prime[0]] = i;
                f[i] = 1; // 素数的素因子只有它本身(1不是素数)
            }
            for (int j = 1; j <= prime[0]; j++) {
                if (i * prime[j] > max_n) break;
                prime[i * prime[j]] = 1;
                if (i % prime[j] == 0) {
                    f[i * prime[j]] = f[i];//当i和prime[j]有最小公共素因子prime[j]时,i * prime[j]的素因子数量和i的素因子数量相等
                    break;
                } else {
                    f[i * prime[j]] = f[i] + 1;//当i和prime[j]没有公共素因子时,i * prime[j] 的素因子为 i的素因子为加1
                }
            }
        }
        return;
    }
    
    int main() {
        init();
        for (int i = 2; i < max_n; i++) {
            int flag = 1;
            for (int k = 0; k < 4 && flag; k++) {//把flag写到for循环的判断条件中,减少一次循环内部的判断,使代码更简洁
                flag = (prime[i + k] == 4);
            }
            if (flag) {
                cout << i << endl;
                break;   
            }
        }
    
    }
    
    展开全文
  • C语言实现素因子分解

    2021-01-20 05:55:33
    给定某个正整数N,求其素因子分解结果,即给出其因式分解表达式 N = p1^k1 * p2^k2 *…*pm ^km。 输入格式说明: 输入long int范围内的正整数N。 输出格式说明: 按给定格式输出N的素因式分解表达式,即 N = p1^...
  • PTA 整数素因子分解

    2020-05-14 11:05:18
    将正整数n分解为其素因子的乘积,其中n>=2并且在int范围内。Solution类的数据成员n代表需要分解的正整数,构造函数完成对数据成员n的初始化,声明了成员函数solve()实现对n的分解。请根据样例输出实现成员函数。...
  • 显示所有的最小因子–素因子 例如输入整数120,那么输出如下 2,2,2,3,5 解: n=eval(input(“输入一个整数”)) i=2 #我们从二开始验证如120%2 while True: if n%i==0: print(i,end=",") n/=i else: i+=...
  • NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数因子个数。 #include<iostream> using namespace std; int main() { int n = 0; while (cin >> ...
  • 筛选法 ...2是素数,所有2的倍数都不是素数,划掉;取出下一个幸存的数,划掉它的所有倍数;直到所有素数找完为止。 这种做法的空间复杂度是O(n),时间复杂度O(n/logn)。 1 const int M...
  • 设p(n)表示整数n>1的最小素因子.本文得到了∑f(n),p(n)uo的渐近式,此处f(n)是一类数论函数。
  • 用循环写一个整数所有因子数 num = int(input("请输入数字")) a = 1 while a (a) a += 1 这个把本身也输出了,怎么去掉本身
  • 整数素因子分解

    万次阅读 2011-10-20 18:46:33
    一、相关概念  素数:又叫质数,就是只能被1和自己整除的整数。例如:2,3,5,7……. 合数:与素数相对,即除了能被1和自己整除还能被其他整数整除的整数。...二、用c#实现整数素因子 public static void Prim
  • int i=2,n = 0; scanf("%d", &...从而保证所有因子都是素数 { if (n % i == 0) { printf("%d ", i); n = n / i;//每次因数分解完一个需除去该因子 break;//在...
  • 整数的质因子

    千次阅读 2018-08-21 21:36:14
    题目:功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) #include&lt;iostream&gt; using namespace std; void prime_factor() { long lInput; ...
  • C语言整数的素数因子分解

    千次阅读 2020-01-01 23:37:52
    给定某个正整数 N,求其素因子分解结果 输入格式: 输入long int范围内的正整数 N。 输出格式: 按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km 其中pi为素因子并要求由小到大输出, 指数...
  • 给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式  一个整数,表示n 输出格式  输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定  n<=10^...
  • 算法思想:1、判断是否为素数,如果是,将该数加入素因子集合,返回。... * 获取正整数所有素因子 * n为正整数 * primes保存所有素因子,如:8=2*2*2,12=2*2*3 */ static void getPrime(int n, vector
  • 计算并输出某整数的最大素因子 算法: 主要是缩减时间复杂度 利用传统的判断素数的方法,用max找到最大的素因数,之后将d除以这个因数,循环计算,知道d对这个因数不能整除,接着来判断d是不是还可以整除更大的数,...
  • 编写程序读入一个整数,显示该整数所有素数因子。例如,输入整数为120,输出应为2、2、2、3、5。 package Chapter_3; import java.util.Scanner; public class lianxi3_19 { public static void main(String[] ...
  • 对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大素因子(如果是素数,则其最大因子为自身) 输入描述: 有多组...
  • c++ 正整数拆分成素因子的乘积

    千次阅读 2017-04-19 21:35:49
    //设计算法,将某个大于1的数分成素因子的乘积 6=2*3 7=7 8=2*2*2 //1.判断当前数是不是素数,是直接返回 //2.否则,循环直到第一个它能整除的素数,当前数变为除以素数后的商,继续大循环。 //判断一个数是不是素数...
  • 素因子去重(蓝桥杯练习题)

    千次阅读 2019-01-30 18:22:58
     给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式  一个整数,表示n 输出格式  输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定 ...
  • 给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式  一个整数,表示n 输出格式  输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定  n<=10^...
  • 功能:输入一个正整数,按照从小到大的顺序输出它的所有因子(重复的也要列举)(如180的质因子为22335) 最后一个数后面也要有空格 输入描述: 输入一个long型整数 输出描述: 按照从小到大的顺序输出它的所有...
  • 整数因子分解法

    2019-04-15 11:32:40
    任意给定一个整数n,则n要么是一个素数,要么拥有一个不超过n\sqrt{n}n​的素因子。因此,当我们依次用不超过n\sqrt{n}n​的素数2,3,5…去除n的时候,要么,我们可以找到一个n的素因子p1p_1p1​,要么我们将得出结论...
  •  给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式  一个整数,表示n 输出格式  输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定  n<=...
  • 求一个数的所有素因子

    千次阅读 2017-07-26 12:54:55
    1不是素数也不是合数!#include #include using namespace std; typedef long long LL; const int N=105; int main() { LL a[N],cnt,i,n; while(~scanf("%lld",&n)) { cnt=0; int m=sqrt(n
  • 常用算法 RSA公钥密码的简介 数论核心: 欧拉函数 大整数素因子分解 提前了解~ 在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1) 欧拉函数计算通式: 个人理解:其实并不是很难...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,624
精华内容 2,649
关键字:

整数的所有素因子