当前位置:首页 » 编程语言 » c语言求全部素数因子
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求全部素数因子

发布时间: 2022-12-30 16:04:59

‘壹’ c语言编程:编写一个函数,输出整数m的全部素数因子。例如:m=120时,因子为: 2,2,2,3,5。

楼主你好!

根据你的要求实现代码如下!

#include<stdio.h>

intmain()

{

printf("请输入一个数:");

inta;

scanf("%d",&a);

for(inti=2;i<=a;){

if(a%i==0&&i!=a){

printf("%d,",i);

a=a/i;

}

elseif(a%i==0&&i==a){

printf("%d ",i);

a=a/i;

}

elsei++;

}

return0;

}

希望我的回答对你有帮助!

‘贰’ C语言 编程求一个自然数m的所有素数因子

1、从最小的因子找起(能找到的最小因子,肯定是素数);
2、找到素因子q后,m反复除以q直至不能整除;
3、重复1、2步骤,直至q==m。

‘叁’ 怎么用C语言求200内所有素数

判断条件if(a%i==0)是对的,但显示的地方就不对了,你要加个判断,如果不是break出来的,那就是素数。 还有循环不必一致到a-1,其实到它的一半就够了。按照这个来修改一下如下:
int a = 3, i ;
while( a <= 200 )
{
for( i=2 ; i<=a/2; i++ )
{
if( a % i == 0 )
break ; // 跳出的不是素数
}

if( i > a/2 ) // 直到循环结束也没有找到因子的是素数
printf( "%4d", a ) ;
a ++ ;
}

‘肆’ C语言要求一个数的素数因子,筛选出了因子,但不知道怎么把不是素数的去掉

按你的代码结构写一个你对照看——

#include"stdio.h"
intmain(intargc,char*argv[]){
inta,b=1,c=2;
printf("请输入一个正整数:");
if(scanf("%d",&a)!=1||a<1){//既然要求正整数,那就要有所限制
printf("输入错误,退出...... ");
return0;
}
printf(" %d",a);
printf(a==1?"没有素数因子 ":"的素数因子如下: ");
while(b<a){
b++;
if(a%b==0){//求因子
//while(//以下把不是素数的因子去掉,要重写——
if(b>2&&!(b&1)||b<2)//小于2和2以上的偶数不是素数
continue;
for(c=3;c*c<=b;c+=2)//从3开始遍历b的平方根
if(b%c==0)//能整除的不是素数
break;
if(c*c>b)
printf("%d",b);//剩下的就是素数了
}
}
printf(" ");
return0;
}

运行样例:

intprime(intn){//素数判断函数
inti;
if(n>2&&!(n&1)||n<2)
return0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return0;
return1;
}
intmain(intargc,char*argv[]){
inta,b=1,c=2;
printf("请输入一个正整数:");
if(scanf("%d",&a)!=1||a<1){//既然要求正整数,那就要有所限制
printf("输入错误,退出...... ");
return0;
}
printf(" %d",a);
printf(a==1?"没有素数因子 ":"的素数因子如下: ");
while(b<a){
b++;
if(a%b==0&&prime(b))//求因子并判断是否为素数
printf("%d",b);//是则输出
}
printf(" ");
return0;
}

‘伍’ 【问题描述】输出一个整数的全部素数因子。

C语言求一个正整数的所有素因子,参考代码如下:
#include "stdio.h"
int main()
{
long n,i,fac0,fac1=1;
scanf("%ld",&n);
while(n>1) {
for(i=2; i<=n; i++)
if(n%i==0) {
fac0=fac1;
fac1=i;
break;
}
if(fac0!=fac1)
printf("%d ",fac1);
n/=fac1;
}
return 0;
}

‘陆’ C语言,编写程序,输出整数n的全部素数因子.例如:输入m=120,输出因子为:2,2,2,3,5,

#include<stdio.h>
intmain(){
intori,test;
scanf("%d",&ori);
for(test=2;test<=ori;)
{
intn,boo=1;
for(n=2;n<test;n++)
{
if(test%n==0)
{
boo=0;
break;
}
boo=1;
}
if(ori%test==0&&boo)
{
ori/=test;
printf("%d,",test);
}
else
test++;
}
return0;
}

应该可以用递归做 明天想想补上来

流程图和编译请自行

‘柒’ 用C语言编写一个函数,对输入的整数k输出它的全部素数因子,且此整数等于其全部素数

#include <iostream>
#include <vector>
#include <iterator>
#include <cmath>
using namespace std;
// 计算num内的所有素数(不包括num)
void CalcPrimes(int num, vector<int> &primes)
{
primes.clear();
if (num <= 2)
return;

primes.push_back(2);
for (int i = 3; i < num; i += 2) {
int root = int(sqrt(i));
int j = 2;
for (j = 2; j <= root; ++j) {
if (i % j == 0)
break;
}
if (j > root)
primes.push_back(i);
}
}
// 输出所有素数组合(递归实现)
int PrintCombinations(int num, const vector<int> &primes, int from, vector<int> &numbers)
{
if (num == 0) {
cout << "Found: ";
(numbers.begin(), numbers.end(), ostream_iterator<int>(cout, " "));
cout << '\n';
return 1;
}

int count = 0;

// 从第from个素数搜索,从而避免输出同构的多个组合
int primesNum = primes.size();
for (int i = from; i < primesNum; ++i) {
if (num < primes[i])
break;
numbers.push_back(primes[i]);
count += PrintCombinations(num - primes[i], primes, i, numbers);
numbers.pop_back();
}

return count;
}
// 计算num的所有素数和分解
int ExpandedGoldbach(int num)
{
if (num <= 3)
return 0;

vector<int> primes;
CalcPrimes(num, primes);

vector<int> numbers;
return PrintCombinations(num, primes, 0, numbers);
}
int main()
{
for (int i = 1; i <= 20; ++i) {
cout << "When i = " << i << ":\n";
int count = ExpandedGoldbach(i);
cout << "Total: " << count << "\n\n";
}
}

‘捌’ 急求,用C语言编程,循环语句:输入一个数,求出它的所有质数因子

#include<stdio.h>
voidmain()
{
inti=2,n;
printf("请输入需要分解的正整数: ");
scanf("%d",&n);
printf("分解质因数的结果为: %d=",n);
while(n>=2)
{
if(n%i==0){printf("%d*",i);n/=i;}
elsei++;
}
printf("");
}


运行示例截图:

‘玖’ 用C语言编程:输入一个整数,输出该整数的所有素数因子。例如,输入120,输出为2、2、2、3和5。

#include <stdio.h>
#include <stdlib.h>

bool isPrime(int n)
{
if(n==1) return false;
for(int i=2; i*i <= n; i++) {
if(n%i ==0) return false;
}
return true;
}

int main()
{
int n, i, j, m;
printf("请输入n: \n");
scanf("%d", &n);
m = n;
for(i=2; i<=n; i++) {
if(isPrime(i)){
while(n%i==0 && n>0) {
printf("%d ", i);
n /= i;
}
}
}
printf("\n");
system("pause");
return 0;
}

‘拾’ 如何通过c语言编程编写一个函数可以输出整数m的全部素数因子

//参考下~~
#include <stdio.h>
main()
{
int x,i,k;
printf("请输入:\n");
while(scanf("%d",&x))
{
printf("分解质因数:\n");
k=x;
for(i=2;i<k;i++)
if(x%i==0)
{
printf("%d ",i);
x=x/i--;
if(x==0)
break;
}
printf("\n");
printf("请输入:\n");
}
}