【看个题吧】暴力

文章探讨了帕斯卡三角形中无平方因子数的特点,提供了一段C语言代码来计算前51行中这些数的总和,结果显示除了4和20外,其余10个数都是无平方因子数,它们的和为105。
摘要由CSDN通过智能技术生成

二项式系数nCk可以如下排成一个三角形,称为帕斯卡三角形:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

.........

可以看出帕斯卡三角形的前八行包含了十二个不同的数:1, 2, 3, 4, 5, 6, 7, 10, 15, 20, 21 and 35。

如果正整数不被任何素数的平方整除,n就被称为无平方因子数。

在帕斯卡三角形前八行的十二个不同的数中,除了4和20之外都是无平方因子数。

这些不同的无平方因子数之和为105.

求帕斯卡三角形前51行所有不同的无平方因子数之和。

代码:

#include <stdio.h>

int count(int n,int k){//计算每一位置的数 

 

 if(k==0||k==n) return 1;

 else 

 return count(n-1,k-1)+count(n-1,k);

 

int sushu(int n){//判断是否为素数 

 for(int i=2;i<n;i++){

  if(n%i==0) {

   return 0;

  }

  

 }

   return 1;

 

}

int yinzi(int n){//判断是否为无平方因子数 

 for(int i=2;i*i<=n;i++){

  if(sushu(i)==1 &&n%(i*i)==0){

   return 0;

  }

 }

 return 1;

}

int main()

{

 int sum=0;

 int a[100][100]={0};

 

 for(int i=0;i<8;i++)

 {

  for(int j=0;j<=i/2;j++)

  {

   a[i][j]=count(i,j);

   //printf("%d ",a[i][j]);

   for(int k=0;k<i;k++)

   {

    for(int m=0;m<=k/2;m++)

    {

     if(a[i][j]==a[k][m])

     a[i][j]=0; //把后面与前面重复的数置为0 

    }

   }

   

  }

 }

 for(int i=0;i<8;i++)

 {

  for(int j=0;j<=i/2;j++){

    if(yinzi(a[i][j])==1) 

    {

     sum+=a[i][j];

    }

  }

 }

 printf("%d",sum);

 

   return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值