本文目錄一覽:
- 1、<a href='#c語言完數問題 請寫一個程序,給出指定整數範圍[a,b]內的所有完數,0 < a < b < 10000。一個數如果恰好' title='c語言完數問題 請寫一個程序,給出指定整數範圍[a,b]內的所有完數,0 < a < b c語言完數問題 請寫一個程序,給出指定整數範圍[a,b]內的所有完數,0 < a < b < 10000。一個數如果恰好
- 2、C語言求 1000以內的完全數
- 3、c語言中求一定範圍內的完數
- 4、用c語言求完數,以下是原題:編寫程序,輸入數據範圍,輸出該範圍之內的所有完數及其個數
- 5、用C語言:求完數
- 6、C語言求完數
<h2 id='c語言完數問題 請寫一個程序,給出指定整數範圍[a,b]內的所有完數,0 < a < b c語言完數問題 請寫一個程序,給出指定整數範圍[a,b]內的所有完數,0 < a < b < 10000。一個數如果恰好
#include “stdio.h”
int main(){
int a,b;
int sum = 0;
scanf(“%d%d”,a,b);
for(int num = a; num = b; num++){
sum = num;
for(int i = 1; i num/2+1; i++){ //處理每個數
if(num % i == 0){ //能被i整除
sum -= i; //減去一個因子
}
}
if(sum == 0){
printf(“%d\n”,num); //輸出完數
}
}
return 0;
}
C語言求 1000以內的完全數
重置sum的位置錯了,放到內循環的開頭:
#include stdio.h
int wanquanshu()
{
int n, i, k, sum;
while (scanf(“%d”, n)!=EOF)
{
for (i=1; i=n; i++)
{
sum=0; //放在這裡
for (k=1; ki; k++)
{
if (i%k==0)
{
sum=sum+k;
}
}
if (sum==i)
{
printf(“%d\n”, i);
}
}
}
return 0;
}
void main()
{
wanquanshu();
}
c語言中求一定範圍內的完數
兩種方法:使用gcc或clang -std=c99 編譯
#include stdio.h
#include string.h
#define MAX 10
void method1(unsigned number);
void method2(unsigned number);
int main(int argc, char *argv[])
{
unsigned number;
scanf(“%u”, number);
method1(number);
method2(number);
return 0;
}
void method1(unsigned number){
char buffer[MAX];
int n = sprintf(buffer, “%u”, number);
for(int i = 0; i = n; ++i)
printf(“%c “, buffer[i]);
printf(“\n”);
}
void method2(unsigned number){
int digits[MAX] = {[0 … MAX-1]=-1};
for(int i = 9; i = 0 number 0; –i){
digits[i] = number % 10;
number = number / 10;
}
for(int i = 0; i MAX; ++i)
if(digits[i] != -1)
printf(“%d “, digits[i]);
printf(“\n”);
}
用c語言求完數,以下是原題:編寫程序,輸入數據範圍,輸出該範圍之內的所有完數及其個數
根據你的代碼改的:
#includestdio.h
int main(void)
{
int i,j,count=0;
int n1,n2,s=0;
printf(“Input 2 integer to determine the range.\n”);
scanf(“%d %d”,n1,n2);
for(i=n1;in2;i++)
{
s=0; //s是用來判斷當前i是否為完數,所以每次開始要置為零
for(j=1;ji;j++)
{
if(i%j==0)
{
/////////// count++; //你是打算對是完數的計數,不應該在這寫
s+=j;
}
}
if(s==i) //c語言的等於判斷是==,=是賦值的意思
{
printf(“%d “,i); //把輸出的數用空格符隔開,你才能看出來噻
count++; //這裡才滿足完數的條件,才該計數
}
}
printf(“\ncount=%d\n”,count);
return 0;
}
我的運行結果是:
修改你的代碼:
用C語言:求完數
//因為沒有說明結束條件,所以暫且以範圍為輸入兩個0為結束條件
#includestdio.h
int check(int low, int high);//列印low和high範圍內的完數,並返回完數的個數
int test(int n);//檢測n是否為完數,如果是,則列印它,並返回1,否則,返回0.
int main(){
int low, high;
int count;//count變數為low和high範圍內的完數個數
scanf(“%d%d”, low, high);//輸入範圍
if(lowhigh || high10000)//若不滿足要求的條件,退出程序
return (1);
while(low!=0 || high!=0)//low和high均為0,則結束
{
count=check(low, high);//列印low和high之間的完數,並返回個數給count
if(count==0)//如果完數個數為0,則列印no
printf(“no”);
printf(“\n”);
scanf(“%d%d”, low, high);//重新輸入範圍low和high
}
return 0;
}
int check(int low, int high){
int t=0;//t為發現的完數個數
int n;
for(n=low;n=high;n++)
{
if(test(n)==1)
t++;
}
return t;//返回完數個數
}
int test(int n)
{
int i;
int sum=0;//sum為因子之和
for(i=1;i=n/2;i++)
if(n%i==0)
sum=sum+i;
if(sum==n)
{
printf(“%d “, n);//若n為完數,則列印,並返回1
return 1;
}
else//否則,返回0
{
return 0;
}
}
希望對你有用~~
C語言求完數
/*完數,即完美數,一個數如果恰好等於除它本身外的因子之和,這個數就稱為完數。例如6=1+2+3.(6的因子是1,2,3)*/
#includestdio.h
void main()
{
int i,j,k,h,s,sum;
int a[200];//20個是不夠的
s=0;
sum=0;
for(i=2;i=1000;i++)
{
s=0;//此處s=0一定要加,因為前幾次循環的時候s的值已經改變
k=0;
for(j=1;ji;j++)
{
if((i%j)==0){a[k]=j;k++;}
}
for(h=0;hk;h++)
{
s+=a[h];
}
if(i==s){printf(“%d “,i);sum++;}
}
printf(“完數的個數:%d\n”,sum);
}
時間太緊,沒注意程序的簡潔性和效率,這個需要你自己改了!
原創文章,作者:WBRX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140029.html