2.1.1 最小公倍数
搜索一下就可以过,不过我貌似悲剧的WA一次
2.1.2 How many primenumbers
简单的判定一下就好
bool isprime(int a)
{
intm=(int)sqrt(a);
for(inti=2;i<=m;i++)
if(a%i==0)returnfalse;
return true;
}
2.1.3 Cake
详见另一日志(转别人的):http://blog.csdn.net/ouxijv/article/details/6665779
2.1.4 Largest prime factor
这个题挺巧妙的。首先用数组存储每一个数字最大的素数编号。然后从2开始判断,如果一个数是素数,那么它之后的所有它的倍数都赋予当前的编号值。这样扫描一遍之后数组中存储的就是其对应的最大的素数编号。
for(int i=2;i<=M;i++)
{
if(a[i]!=0)continue;
elseif(isprime(i))
{
for(intj=1;j*i<=M;j++)
a[j*i]=order;
order++;
}
}
2.1.5 又见GCD
小小的搜索一下就可以了
for(i=2,c=b*i;gcd(a,c)!=b;i++)
c=b*i;
2.1.6 七夕节
其实思想和2.1.4是一样的,只不过把编号,换成叠加
for(i=1;i<=M/2;i++)
for(j=2;j*i<=M;j++)
a[j*i]+=i;
2.1.7 找新朋友
和前面一样也是找到一个约数之后将其倍数都标记,这样能减少时间。直接搜应该也可以吧(只是感觉)。
for(i=2;i<n;i++)
if(a[i]==0&&n%i==0)
for(j=i;j<n;j+=i)
a[j]=1;
for(i=1;i<n;i++)
if(a[i]==0)ans++;
2.1.8 The Area
数学题。自己算吧。实在不会算。百度之吧。。。。。
最后我想说csdn的在线编辑 真心垃圾的一逼。。。无语。。还不让用离线编辑。。。想逼我挪窝?