如何用DEV C++寫PERFECT NUMBER

如題 我知道PERFECT NUMBER的定義是2^(n-1)*(2^n-1) 然後n是質數 我想用DEV C++寫出一個程式 希望能得知我輸入的數字n以下的PERFECT NUMBER有哪些 如果cin n=10000跑出來的是: 6 28 120 496 2016 8128 但是120和2016並不是PERFECT NUMBER 我想知道在哪裏出了問題? 要如何修改呢? 下面是我的程式碼: #include<iostream> #include<math.h> using namespace std; int main() { ... show more 如題 我知道PERFECT NUMBER的定義是2^(n-1)*(2^n-1) 然後n是質數
我想用DEV C++寫出一個程式 希望能得知我輸入的數字n以下的PERFECT NUMBER有哪些
如果cin n=10000跑出來的是:
6
28
120
496
2016
8128

但是120和2016並不是PERFECT NUMBER

我想知道在哪裏出了問題? 要如何修改呢?

下面是我的程式碼:

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n,i; cout<<"Input an integer:";
cin>>n;
for(i=2;(pow(2,i-1)*(pow(2,i)-1))<=n;i++...
{
for(int x=2;x<i;x++)
{ if((i%x)==0) break; }
if((pow(2,i-1)*(pow(2,i)-1))==(int)(pow(...
cout<<(pow(2,i-1)*(pow(2,i)-1))<<endl;
}
return 0;
}
Update: 謝謝你的回答~
但是如果我打小一點的數字 EX:200
還是會跑出120這個錯誤的數字
感覺並不是誤差所造成的
而是我無法過濾掉質數
能麻煩再幫我看一下嗎?謝謝!!
2 answers 2