• 素数


    Description

    Download as PDF
    Webster defines prime as:


    prime (prim) n.[ME, fr. MF, fem. of prin first, Lprimus; akin to Lprior1 :first in time: original 2 a : having no factor except itself and one $langle$3 is a   number $
angle$b : having no common factor except one $langle$ 12 and 25 are relatively  $
angle$3 a : first in rank, authority or significance :principal b : having the highest quality or value $langle$  television time $
angle$ [from Webster's New Collegiate Dictionary]


    The most relevant definition for this problem is 2a: An integer g>1 is said to be prime if and only if its only positive divisors are itself and one (otherwise it is said to be composite). For example, the number 21 is composite; the number 23 is prime. Note that the decompositon of a positive number g into its prime factors, i.e., 

    egin{displaymath}g = f_1 	imes f_2 	imes dots 	imes f_nend{displaymath}

    is unique if we assert that fi > 1 for all i and $f_i le f_j$ for i<j.

    One interesting class of prime numbers are the so-called Mersenne primes which are of the form 2p- 1. Euler proved that 231 - 1 is prime in 1772 -- all without the aid of a computer.

    Input 

    The input will consist of a sequence of numbers. Each line of input will contain one number g in the range -2 31 < g <2 31, but different of -1 and 1. The end of input will be indicated by an input line having a value of zero.

    Output 

    For each line of input, your program should print a line of output consisting of the input number and its prime factors. For an input number $g>0, g = f_1 	imes f_2 	imesdots 	imes f_n$, where each fi is a prime number greater than unity (with $f_i le f_j$ for ij), the format of the output line should be


    egin{displaymath}g mbox{	t = } f_1 mbox{	t x } f_2 mbox{	t x } dots mbox{	t x } f_nend{displaymath}

    When g < 0, if $ mid g mid = f_1 	imes f_2 	imes dots 	imes f_n$, the format of the output line should be 

    egin{displaymath}g mbox{	t = -1 x } f_1 mbox{	t x } f_2 mbox{	t x } dotsmbox{	t x } f_nend{displaymath}

    Sample Input 

    -190
    -191
    -192
    -193
    -194
    195
    196
    197
    198
    199
    200
    0
    

    Sample Output 

    -190 = -1 x 2 x 5 x 19
    -191 = -1 x 191
    -192 = -1 x 2 x 2 x 2 x 2 x 2 x 2 x 3
    -193 = -1 x 193
    -194 = -1 x 2 x 97
    195 = 3 x 5 x 13
    196 = 2 x 2 x 7 x 7
    197 = 197
    198 = 2 x 3 x 3 x 11
    199 = 199
    200 = 2 x 2 x 2 x 5 x 5
    



    Miguel Revilla
    2000-05-19

    #include <iostream>
    #include <stdio.h>
    #include <cmath>
    using namespace std;
    
    int main()
    {
    	long long int n;
    	while (scanf("%lld",&n) && n)
    	{
    		if (n <0)
    		{
    			n = -n;
    			cout << "-"<< n<< " = -1 x ";
    		}
    		else
    		{
    			cout << n << " = ";
    		}
    		long long int k = sqrt((double) n);
    		for (long long int i=2; i<=k; i++)
    		{
    			if (n %i==0)
    			{
    				n = n/i;
    				cout << i<< " x ";
    				i = 1;
    				k = sqrt((double) n);
    			}
    		}
    		cout << n<< endl;
    	}
    	return 0;
    }


  • 相关阅读:
    安装oracle客户端后,怎样设置电脑的环境变量?
    KETTLE、spoon使用
    软件环境常识 --dev sit uat
    使用 CAS 在 Tomcat 中实现单点登录 http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/
    oracle数据库的完整性约束规则详解
    Oracle创建表语句(Create table)语法详解及示例
    Oracle TO_DATE 日期格式
    L/SQL Developer 和 instantclient客户端安装配置
    mysql里的序列应用详解
    .net core 使用 textSharp生成pdf
  • 原文地址:https://www.cnblogs.com/Tovi/p/6194882.html
Copyright © 2020-2023  润新知