P1 TAB之期末 C++變化題範例
1/9更新:有想考友誼數、水仙花數、分數相加化簡 、 孿生質數 哦!
1/9更新:有想考友誼數、水仙花數、分數相加化簡 、 孿生質數 哦!
一、1061_u3-1_prime
輸入一個正整數 n , 0<n<46000 ,若 n 為質數則印出 Prime,否則印出 Not,註:1非質數
輸入範例
1
2
3
247
|
輸出範例
Not
Prime
Prime
Not
|
二、1061_u3-2_gcd(a,b)
輸入兩個正整數 a,b , 0<a,b<65535 ,求 (a,b)的最大公因數
輸入範例
15 21
60 126
88 66
3598 3855
|
輸出範例
3
6
22
257
|
三、1061_u3-3_PerfectNumber
輸入一個正整數 n , 0<a,b<34567890 ,算出n的所有<n的因數和 s, 若s=n則印出Perfect,否則印出 s 值
輸入範例
6
66
496
666
8128
8128496
33550336
|
輸出範例
Perfect
78
Perfect
816
Perfect
8005888
Perfect
|
四、1061_u3-4_5n+1
輸入一個正整數 n , 0<n<1000 ,一直重複計算直到 n=1為止,印出共出現幾個不同的n值
若n為3的倍數則除3,若n為偶數則除2,否則乘5再加1。
例出n=7 ,則出現的n依序為 7 , 36 , 12 , 4 , 2 , 1 共出現 6 個 不同的 n 值
輸入範例
3
7
10
504
972
|
輸出範例
2
6
16
11
8
|
參考程式碼:
// 1061_u3-1 prime
#include
<iostream>
using
namespace std;
int main(void)
{
int i, n;
bool yes=true;
cin >> n;
if(n==1) yes=false;
for(i=2; i*i<=n; ++i)
{
if(n%i==0)
{
yes=false;
break;
}
}
if(yes) cout <<"Prime\n";
else cout << "Not\n";
return 0;
}
// 1061_u3-2 gcd(a,b)
#include
<iostream>
using
namespace std;
int main(void)
{
int a,b,r;
cin >> a >> b;
r = a%b;
while( r!=0 )
{
a=b;
b=r;
r=a%b;
}
cout << b << endl;
return 0;
}
// 1061_u3-3 Perfect Number
#include
<iostream>
using
namespace std;
int main(void)
{
int n,i,s=0;
cin >> n;
for(i=1; i<n; ++i )
{
if(n%i==0) s+=i;
}
if(n==s) cout <<"Perfect\n";
else cout << s << endl;
return 0;
}
// 1061_u3-4 5n+1
#include
<iostream>
using
namespace std;
int main(void)
{
int i,n,cnt=1;
cin >> n;
while(n!=1)
{
cnt ++;
if(n%3==0) n/=3;
else if(n%2==0) n/=2;
else n=n*5+1;
}
cout << cnt << endl;
return 0;
}
0 意見:
張貼留言