當前位置:首頁 » 編程語言 » 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");
}
}