|
Post by huangno1 on Feb 26, 2017 20:40:45 GMT -8
程式說明
執行此功能時,使用者會輸入一個整數值 n (1 <= n <= 10^9),請判斷由 n 構成的所有循環整數(包含 n)是否為質數:請於畫面輸出每個循環整數和質數判斷結果,一旦發現某個循環整數不是質數,就停止判斷。
本題需撰寫兩個函式 isPrime() 和 cycled()。
(1) isPrime() 有一個整數參數 n,呼叫端會傳入一個正整數值。本函式將回傳一個布林值 (bool):若 n 為質數,回傳 true;否則,回傳 false。(注意:傳入 1 時應回傳 false。)
(2) cycled() 有一個整數參數 n,本函式將回傳 n 向右循環一位的整數值。例如 cycled(123) 回傳 312; cycled(2015) 回傳 5201;cycled(890) 回傳 89;cycled(2) 回傳 2。
【範例輸入1】
137
【範例輸出1】
Check 137: Yes
Check 713: No
【範例輸入2】
719
【範例輸出2】
Check 719: Yes
Check 971: Yes
Check 197: Yes
#include <stdio.h>
int isPrime( int n )
{
int i , j ;
for ( i = 2 ; i < n ; i ++ )
{
if ( n % i == 0 )
{
return 0 ;
break ;
}
} return 1 ;
}
int cycled ( int n )
{
int i = 0 , len = 0 , k = n ;
int end = n % 10 , t = 1 ;
while ( k > 0 )
{
k = ( k - k % 10 ) / 10 ;
len ++ ;
}
for ( i = 1 ; i < len ; i ++ )
t *= 10 ;
n = ( n - n % 10 ) / 10 ;
n += t * end ;
return n ;
}
int main()
{
int num=0;
scanf("%d", &num);
int next=num;
do{
printf("Check %d: ", next);
if (isPrime( next ))
{
printf("Yes\n");
}
else
{
printf("No\n");
break;
}
next = cycled( next );
}while (num != next);
return 0;
}
|
|