完數編程題
『壹』 編程題,找完數
#include <stdio.h>
int main(void)
{
int factor, m, n, number, sum;
int repeat, ri;
int i,j,k;
scanf("%d",&repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
printf("result:\n");
for(i=m;i<=n;i++)
{
k=0;
for(j=1;j<i;j++)
if(i%j==0)k+=j;
if(k==i)
{printf("%d=",k);
for(j=1;j<i;j++)if(i%j==0){if(j==1)printf("%d",j);else printf("+%d",j);}
printf("\n");
}
}
}
}
//費了不少時間,望多加點分!
『貳』 C++編程題 輸出完數
完全數(Perfect number),又稱完美數或完備數,是一些特殊的自然數。它所有的真因子(即除了自身以外的約數)的和(即因子函數),恰好等於它本身。如果一個數恰好等於它的因子之和,則稱該數為「完全數」。
#include<stdio.h>
int sum(int n)
{ int i,s=1;
for(i=2; i*i<n; i++)
if(n%i==0)s+=i+n/i;
if(i*i==n&&n%i==0)s+=i;
return s;
}
int main()
{ int n,i;
scanf("%d",&n);
for(i=2; i<=n; i++)
if(sum(i)==i)
printf("%d ",i);
return 0;
}
『叄』 關於'完數'的c語言編程問題。
#include<stdio.h>
void main()
{
int i,s,t;
printf("===1000以內所有的完數===\n");
for (i=1;i<=1000;i++)
{
t=0;
for (s=1;s<i;s++)
{
if (i%s==0)
t+=s;
}
if (t==i)
printf("%d,",i);
}
printf("\b \n");
}
這個是整體的思路,而格式的化你自己來設計吧!
『肆』 C編程中關於「完數」的一道題
#include <stdio.h>
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<n; i++) //循環1000以下的整數i
{
r = 0;
for(j=1;j<i;j++){
if(i%j == 0){//能整除i的數就是i的因子
r = r + j;//i的因子相加
}
}
if(r == i){ //當i的所有因子相加等於i時 i就是完數
printf("the result is:%d\n",r);
r = 0;
}
}
return 0;
}
1000以內只有6,28,496,
『伍』 編程找到1000以內的所有"完數
#include"stdio.h"
main()
{
int j,i,k=0;
for(j=6;j<1001;j++)
{
for(i=1;i<=j/2;i++)if(j%i==0)k+=i;
if(j==k)
{
printf("%4d its factors are ",k);
for(i=1;i<=j/2;i++)
if(j%i==0)printf("%d,",i);printf("\b \n");
}
k=0;
}
getch();
}
測試過了,顯示結果
6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248
『陸』 編程 完數問題
#include<stdio.h>
#define N 100
main()
{
int m,s,i,data,sum=0;
int a[N];
printf("請輸入您要輸入的數據:");
scanf("%d",&data);
printf("%d以內的完數有:",data);
for(m=2;m<data;m++)
{
s=0;
for(i=1;i<m;i++)
if((m%i)==0)
s=s+i;
if(s==m)
{
a[sum]=m;
sum++;
}
}
for(i=0;i<sum;i++)
printf("%d ",a[i]);
printf("\n");
}
『柒』 c語言編程題 :判斷一個數是不是完數
C語言程序如下:
#include "stdio.h"
int main()
{
int n,i,sum=0;//定義一個存放因子和的變數,以及需要判斷的數n,和循環條件用到的i
printf("請輸入需要判斷的數:");
scanf("%d",&n);//存放需要判斷的數n
for(i=1;i<n;i++)//循環條件找出因子並累加
{
if(n%i==0)
sum+=i;
}
if(n==sum)
printf("%d 是完數 ",n);
else
printf("%d 不是完數 ",n);
return 0;
}
(7)完數編程題擴展閱讀:
程序思路
假設一個數為n,我們可以用循環條件,讓n分別和1,2,3,4,5……n-1進行判斷是否能被整除,我們可以通過取余(%)的方法來進行判斷。如果判斷出來取余結果為0,那麼就把這些因子全部加起來,得到因子的和。
接下來,將因子的和與n進行比較,如果相等,那麼就是完數,反之不是完數。
判斷一個完數,就是運用基本輸入函數(scanf),將要判斷的數據輸入進來,之後運用循環條件來判斷。
『捌』 關於完數的++編程問題
第二個的int t=0是個局部變數,再for(int n=1;n<=1000;n++){。。。。}每循環完一次t就被釋放了(棧),而第一個的t對於for循環來說相當於一個全局變數。
如果你還不明白,我建議你還是從頭看看c++的語法吧,你基礎知識都沒掌握住
『玖』 C語言編程,完數問題!
Private Function isws(m As Integer, splus As String) As Boolean
Dim i%, s%
For i = 1 To m / 2
If m Mod i = 0 Then
s = s + i
End If
Next i
If s = m Then '如果是完數,則重新循環,將各因子找出來
splus = m & "=1" '因為1是所有數的因子,所以先找出來,接下來的循環可以從2開始
For i = 2 To m / 2
If m Mod i = 0 Then
splus = splus & "+" & i
End If
Next i
isws = True
Else
isws = False
End If
End Function
Private Sub Form_Click()
Dim i%, sp$
Print "1000以內的完數為:"
For i = 1 To 1000
If isws(i, sp) Then Print sp 'sp是按地址傳遞的,所以得到的值是函數isws中最後生成的splus值
Next i
End Sub
絕對正確,給分哦
『拾』 C++編程求完數
首先解釋下完數:一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.(6的因子是1,2,3)。
程序有以下幾個問題:
1.#include "stdafx.h" 可以去掉,我的c++說沒找到,不知何解,所以去掉了,不影響程序。
2.if(Num = i) 應該為 if(num==i)
3.看下面程序注釋
//#include "stdafx.h"
#include <iostream>
using namespace std;
//-------------------------------------------------
int main()
{
int i = 0, Num, j;
//奧,注意這里,剛忘記了,這里的「{」也去掉
for(Num = 1; Num <= 1000; Num++)
{
i=0; //這里加一句
for(j = 1; j < Num; j++) //還有這里去掉j<=num 的=號
if ((Num % j) == 0)
i = i + j;
//去掉這里的「}」
if(Num == i){
cout << Num << endl;
}
}
}
結果為6,28,496