c语言求纯粹合数,最新版C语言middle(解析).docx

Problem 1 三角形的个数

方法1:

#in clude

int isTriangle( int a, int b, int c ) // 任意 2 边之和大于第 3 边

{

if ( a+b>c && a+c>b && b+c>a )

return 1;

else

return 0;

}

void solve( int n )

{

int a, b, c;

int sum = 0;

for ( a=1; a

{

for ( b=a+1; b

{

for ( c=b+1; c

if ( a+b+c==n && isTriangle( a,b,c ))

{

sum++;

}

}

}

}

printf("%d\n", sum);

}

int mai n()

{

int n;

while ( scan f("%d", &n )==1 )

{

solve( n );

}

return 0;

}

方法2:

#in clude

int isTriangle( int a, int b, int c ) // 任意 2 边之和大于第 3 边

{

if ( a+b>c && a+c>b && b+c>a )

return 1;

else

return 0;

}

void solve( int n )

{

int a, b, c;

int sum = 0;

for ( a=1; a

{

for ( b=a+1; b

c=n-a-b;//保证 a+b+c=n

if ( c>b )//保证了 c与b、a不会相同

{

if ( isTriangle( a,b,c ))

sum++;

}

else

break;

}

}

printf("%d\n", sum);

}

int mai n()

{

int n;

while ( scan f("%d", &n )==1 )

{

solve( n );

}

return 0;

}

Problem 2纯粹素数

#i nclude

#in clude

#i nclude

#define MINM 1013//1013 是第一个大于 1000的纯粹素数

#defi ne MAXN 20//n 的最大取值

#defi ne MAXD 10

char digit[MAXD+1];

int pureprime[MAXN+1];

int isPrime(int i) //判断参数i是否是素数

{

{

{

{

int j, m= sqrt(i*1.0) ;

if(i<2) return 0;

for(j=2; j<=m; j++)

{

if(i%j==0)

return 0;

}

return 1;

}

int isPurePrime(int m)// 判断参数 m 是否是纯素数

{

int i, len;

sprintf(digit, "%d", m); //整数 m 转换成字符串保存在 digit 中 len=strlen(digit) ;

for(i=0;i

{

if((digit[i]!='0')&&(isPrime( atoi(digit+i) )==0))//atoi() 将数字字符串转换成整数 {

return 0;

}

}

return 1;

}

void initialize()

{

int i;

int n=0;

for(i=MINM; n

{ if(isPurePrime(i))

{ pureprime[++n]=i;

}

}

}

int main()

{

int n; initialize();

while(scanf("%d",&n)!=EOF)

printf("%d\n",pureprime[n]);

{

{

{

{

} return 0;

}

Problem 3纯粹合数

#in elude #in elude

#i nclude

#define MINM 100

#define MAXN 100〃最多需要计算 100个合数

#defi ne MAXD 10 char digit[MAXD+1];

int pureComposite[MAXN+1];

int count;

int isComposite(int m)〃判断参

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值