當前位置:首頁 » 編程語言 » c語言丑數

c語言丑數

發布時間: 2022-08-18 21:09:31

A. 3道c語言編程題,希望你們能幫助我

1.
#include <stdio.h>

int main()
{
int n,m,count=0;
scanf("%d",&n);
m = n;
while(m%2==0) m/=2;
while(m%3==0) m/=3;
while(m%5==0) m/=5;
while(m%7==0) m/=7;
if(m!=1)
{
printf("no\n");
return 0;
}
for(m=1;m<=n/2;m++)
{
if(n%m==0)
count++;
}
printf("%d\n",count);
}

----

2.
#include <stdio.h>
#include <math.h>
int main()
{
int n,m;
double temp;
scanf("%d",&n);
temp = sqrt(double(n));
for(m=2;m<=temp;m++)
{
if(n%m==0)
{
printf("no\n");
return 0;
}
}
printf("yes\n");
}

-----

3.
#include <stdio.h>

int main()
{
char s[1000];
char word[1000];
char* p;
int count = 0;
gets(s);
p = s;
while(sscanf(p,"%s",word)==1)
{
count++;
while(*p==' ') p++;
while(*p!=' '&&*p!=0) p++;
}
printf("%d\n",count);
}

B. C語言編程:輸入兩個正整數m和n,求它們的最大公約數。

代碼及注釋如下:

#include <stdio.h>

int GCD(int a,int b)//定義函數,用來計算最大公約數

{

return b==0?a:GCD(b,a%b);

//此處使用了遞歸,如果b=0,返回a為最大公約數,否則,一直以b與a%b賦給函數,實現輾轉相除

}

int main()

{

int a, b ; //定義實參a, b

int answer ; //定義最後結果

scanf ( "%d%d" , &a, &b) ; //取a,b的值

answer = GCD (a, b) ; //把結果賦給answer

printf ( "%d與%d的最大公約數為%d " , a , b , answer ) ; //輸出結果

}

(2)c語言丑數擴展閱讀:

輾轉相除法求最大公約數的原理:

因為對任意同時整除a和b的數u,有a=su,b=tu,它也能整除r,因為r=a-bq=su-qtu=(s-qt)u。

反過來每一個整除b和r的整數v,有 b=sv , r=tv,它也能整除a,因為a=bq+r=svq+tv=(sq+t)v。

因此a和b的每一個公因子同時也是b和r的一個公因子,反之亦然。

這樣由於a和b的全體公因子集合與b和r的全體公因子集合相同,所以a和b的最大公因子必須等於b和r的最大公因子,這就證明了上邊的等式。即(a,b)=(b,r)。

因而,可以由此,得到兩個數的最大公約數。

C. c語言程序要求「輸入一個n數輸出第n個丑數。丑數是素因子只有2.3.5.7」如何操作

#include<iostream>

#include<climits>

usingnamespacestd;

//遍歷法找丑數

intIsUgly(intnum)//判斷是否是

{

while(num%2==0)

{

num/=2;

}

while(num%3==0)

{

num/=3;

}

while(num%5==0)

{

num/=5;

}

if(num==1)

return1;

else

return0;//notanuglynumber

}

voidGetUglyNumber(intindex)

{//找到第index個丑數

inti,time=0;

if(index<1)

{

cout<<"errorinput"<<endl;

exit(EXIT_FAILURE);

}

for(i=1;i<INT_MAX&&time<index;i++)

{

if(IsUgly(i))

{

time++;

//cout<<i<<"";

}

}

cout<<i-1<<endl;

}

intmain()

{

intNumber;

cout<<"Inputanumber:";

cin>>Number;

GetUglyNumber(Number);

return0;

}

Inputanumber:7

8

Pressanykeytocontinue

D. c語言程序,要求輸入一個n數輸出第n個丑數。丑數是素因子只有2.3.5.7。非常急,謝謝。

含因子2,3,5的正整數被稱作丑數 不含7 1不是丑數。

判斷方法

首先除2,直到不能整除為止,然後除5到不能整除為止,然後除3直到不能整除為止。最終判斷剩餘的數字是否為1,如果是1則為丑數,否則不是丑數。

你的題目是不是輸入n個整數,輸出所有丑數。

#include<stdio.h>
intiscn(intnum);
#definemaxSize10//輸入的最大數字個數可修改
intmain()
{
intcnum[maxSize],num,i,j=0;
printf("輸入最多%d個正整數(不足%d個,可以輸入負數結束輸入): ",maxSize,maxSize);
for(i=0;i<maxSize;i++)
{
scanf("%d",&num);
if(num<0)
break;
if(iscn(num))
cnum[j++]=num;
}
printf("其中所有丑數為: ");
for(i=0;i<j;i++)
printf("%d",cnum[i]);
return0;
}
intiscn(intnum)//檢查整數是否為丑數是返回1不是返回0
{
intchu;
chu=num;
if(num==1)
return0;
while(1)
{
if(chu%2==0)
chu=chu/2;
else
break;
}
while(1)
{
if(chu%5==0)
chu=chu/5;
else
break;
}
while(1)
{
if(chu%3==0)
chu=chu/3;
else
break;
}

if(chu==1)
return1;
else
return0;
}

E. 請教一簡單c語言問題:下面求1~1500丑數編程哪錯了😭

#include<stdio.h>
boolIsUgly(intnumber)
{
while(number%2==0)
number/=2;
while(number%3==0)
number/3=;
while(number%5==0)
number/5=;
return(number==1)?true:false;
}
intmain()
{
inti;
for(i=0;i<1500;i++)
{
if(IsUgly(i)==1)
printf("%d ",i);
}
return0;
}

我按照你的截圖運行了一下,報錯沒有定義IsUgly;是因為VC6.0沒有bool的頭文件,所以你使用bool是不對的;

我根據你的程序改進了一下,我們使用bool是為了得到返回值1或者0;

那麼我可以嘗試將bool改成int,在最後判斷number是否是1的時候,返回1或者0;

下面是我改進的代碼,

#include<stdio.h>
intIsUgly(intnumber)//將bool改成int定義IsUgly函數
{
while(number%2==0)
number=number/2;
while(number%3==0)
number=number/3;
while(number%5==0)
number=number/5;
return(number==1)?1:0;//如果number==1,返回1,否則返回0
}
intmain()
{
inti;
for(i=2;i<=1500;i++)//0除以2是0,0除以2的余數還是0,所以如果i=0,就是死循環,
//因為1不是丑數,所以建議從2開始循環;1-1500應該是包含1500的
//並且1500也是丑數,所以是小於等於1500
{
if(IsUgly(i)==1)
printf("%d ",i);
}
return0;
}

F. java和C語言有什麼區別

java是面向對象的編程語言。c是面向過程的編程語言,而且JAVA是可以跨平台的。而C語言不能,但能夠直接操作硬體,並且生成機器碼的效率高。C語言有指針,想要學好C語言,指針就必須學好。JAVA是沒有指針的。在C語言中,是可以不初始化使用的,而在JAVA中,是必須初始化值的。總的來說,C語言是基礎語言,JAVA是面向對象的一門語言。

G. C/C++ 基於NTFS數據流隱藏文件的代碼(難題,勿灌水)

直接網路搜索黑客防線ntfs數據流,在我的印象中08年以前的期刊中有不下3篇是討論ntfs數據流隱藏的。記得有一篇是NTFS數據流的創建與檢測的文章,是C++寫的代碼,你從網上找一下源碼

H. 編程實現計算正整數NUM的各個位上的數字之積。 例如: 如輸入:123,則輸出應該是:6

不知道你要用什麼語言實現。那就用C吧
#include <stdio.h>
int main()
{
int NUM = 21456; //你設定的正整數
int tmp1,tmp2,idx=0;
int result = 1;
tmp1 = NUM;
while(tmp1> 0)
{
tmp2 = tmp1%10;
result = result * tmp2;
tmp1 = (int)(tmp1 /10); //除去最未末位
}
printf("The NUM is %d, and the result is %d\n",NUM,result);
return 0;
}

熱點內容
vpn如何訪問伺服器 發布:2025-01-19 21:09:31 瀏覽:495
如何測試電視的配置 發布:2025-01-19 21:00:48 瀏覽:609
sql日期格式轉換字元 發布:2025-01-19 20:58:45 瀏覽:878
路由器管理密碼是什麼忘了怎麼辦 發布:2025-01-19 20:34:35 瀏覽:427
java方法定義 發布:2025-01-19 20:20:50 瀏覽:404
kr腳本 發布:2025-01-19 20:17:41 瀏覽:518
幫我開啟存儲 發布:2025-01-19 20:17:39 瀏覽:813
s9存儲縮水 發布:2025-01-19 20:08:06 瀏覽:335
2b2t的伺服器編號是什麼 發布:2025-01-19 19:58:55 瀏覽:874
androidstudio下載與安裝 發布:2025-01-19 19:58:14 瀏覽:560