從here開始,我試圖開發自己的邏輯來生成一系列醜陋的數字。但每次打印所有數字。C中的醜陋數字的邏輯
我正在確定數字的前3個素數因子是2,3和5,並將它們放置在一個計數變量中,以確定數字x的素數因子總數。
如果計數大於3,數字並不難看。
下面是代碼:
/* To generate a sequence of Ugly numbers
Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, …
shows the first 11 ugly numbers. By convention, 1 is included.
*/
#include<stdio.h>
#include<math.h>
int isprime(int x)
{
int i;
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}
int isUgly(int x)
{
int count=0; //To maintain the count of the prime factors. If count > 3, then the number is not ugly
int i;
for(i=2;i<=sqrt(x);i++)
{
if(isprime(i) && x%i==0)
{
count++;
if(count > 3)
return 0; // Not ugly
}
}
return 1;
}
int main(void)
{
int i,n=10;
printf("\n The ugly numbers upto %d are : 1 ",n);
for(i=2;i<=n;i++)
{
if(isUgly(i))
printf(" %d ",i);
}
return 0;
}
步驟雖然與調試器的代碼。 – 2014-11-23 04:56:21
谷歌搜索'醜陋的數字'出現了[定義](http://www.geeksforgeeks.org/ugly-numbers/):_醜陋的數字是其唯一的主要因素是2,3或5的數字。按照慣例,所以包括1。因此,通過這個定義,如果可以重複(正好)2,然後3,然後5,並且值的序列結束於1,那麼數字會變得很難看。如果它以其他方式結束數字,那麼它不是醜陋的,並且序列中的最後一個值是除2,3或5以外的一個或多個素數的乘積。(谷歌搜索還揭示了關於該主題的一些SO問題。) – 2014-11-23 05:50:42