import java.util.Scanner;
public class 质数因子 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
long n = sc.nextLong();
for(int i = 2 ;i<= n; i++){
if(isPrime(i))
while(n%i==0)
{
n = n/i;
System.out.print(i+" ");
}
}
}
}
private static boolean isPrime(int n) {
for(int i =2;i<Math.sqrt(n) ;i++) {
if(n%i==0)
return false;
}
return true;
}
}
#include <stdio.h>
#include <string.h>
#define N 100
int main()
{ long i; int j; long n; char over; long devisor[N]; scanf("%ld", &n); j = 0; while(1){ over = 1; for(i=2 ; i<=(n+1)/2 ; i++){ if(n%i == 0){ devisor[j++] = i; n /= i; over = 0; break; } } if(over) break; } for(i=0 ; i<j ; i++){ printf("%ld ", devisor[i]); } printf("%ld \n", n); }
好多人没明白这个问题的意思,其实就是让你把输入的整数因式分解,只不过因子必须都是质数
例如:180 = 2 * 2 * 3 * 3 * 5;90 = 2 * 3 * 3 * 5;而不是找出所有的质数因子
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
long number = 0;
while(scanner.hasNextLong())
{
number = scanner.nextLong();
isPrimerFactors(number);
}
}
private static void isPrimerFactors(long num)
{
long number = num;
while(number != 1)
{
for(int i = 2; i <= number ;i++)
{
if(number % i == 0)
{
number /= i;
System.out.print(i + " ");
break;
}
}
}
}
}
num = int(input()) fac = [] if num>=2: #如果输入为1,则没有质因子。所以只需要考虑输入大于等于2. i=2; while i<= int(num**0.5)+1: # 对于输入num,我们只需要搜索至m,使得m^2>=num。再往后仍无质因子说明num本身就是最后一个质因子。 if num%i == 0: fac.append(i) num = num/i # 找到一个质因子后即可减小num。 else: i+=1 fac.append(int(num)) for i in fac: print(i,end=" ")
using System;
class Solution
{
static void Main()
{
long param =long.Parse(Console.ReadLine());
if(param == 1) Console.Write("");
long temp = param ;
for(long k = 2;k<= temp;k++)
{
if(IsPrime(k))
{
while(temp % k== 0)
{
temp = temp/k;
Console.Write(k + " ");
}
}
}
//if(IsPrime(param)) Console.WriteLine(param + " ");
}
public static bool IsPrime(long num)
{
if(num == 2 || num == 3) return true;
if(num %6 != 1 && num % 6 != 5) return false;
for(long i = 5;i <= Math.Sqrt(num) ;i+=6)
{
if(num % i == 0 && num %(i + 2) == 0) return false;
}
return true;
}
} #include<iostream>
#include<string>
#include<math.h>
using namespace std;
bool isPrime(int n)
{
int flag = false;
for (int i = 2; i <= sqrt(n); i++)
{
if (n%i == 0)
return flag;
}
flag = true;
return flag;
}
int main()
{
int n;
while (cin >> n)
{
int m = n;
while (m>1)
{
for (int i = 2; i <= m; i++)
{
if ((m%i == 0) && isPrime(i))
{
cout << i << " ";
m = m / i;
break;
}
}
}
}
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
long int input;
//方法一
//while (cin >> input)
//{
// while (input != 1)
// {
// for (int i = 2; i <= input; i++)
// {
// if (input % i == 0)
// {
// input /= i;
// cout << i << ' ';
// break; //只要能被i整除,i总是从2开始
// }
// }
// }
//}
//方法二
//while (cin >> input)
//{
// for (int i = 2; i <= input; i++)
// {
// //只要能被i整除,i总是从2开始
// if (input%i == 0)
// {
// input /= i;
// cout << i << " ";
// i = 1;//经i++之后 i又变为2开始
// }
// }
//}
//方法三
while (cin >> input)
{
for (int a = 2; a<= sqrt(input); a++)
{
//此处是while,把a整除结束才可加1
while (input%a == 0)
{
cout << a << ' ';
input = input / a;
}
}
if (input>1) cout << input << ' ';
}
//system("pause");
return 0;
}
#一个整数x的质因子的求法: # step1:在2~x^0.5上,从2开始除x,如果能整除,记录下这个除数,然后用商去继续进行上述的操作,直到商为1; # step2:如果除不进,除数加一。如果一直加一,除数大于x^0.5,则说明x的质因子只有它本身。 # 被除数 ÷ 除数=商···余数 def FindPrimeNumber(num): lst = [] i = 2 #从2开始除num while num != 1: #商不等1时 if num % i == 0: lst.append(i) #如果能整除,记录下这个除数i num //= i #更新num,num = 商 else: #如果num除以i除不尽 if i>int(num**0.5): #当i大于根号num时,说明num的质因子只有它本身,此时结束循环 lst.append(num) break else: i+=1 #除数i+1 for item in lst: print(item,end=' ') if __name__=='__main__': x = int(input()) FindPrimeNumber(x)