题目: zyf最喜欢的数字是1!所以他经常会使用一些手段,把一些非1的数字变 成1,并为此得意不已。他会且仅会的两种手段是:
1.把某个数m除以某个质数p——当然p必须能整除这个数,即m=m/p
2.把某个数m减1,即m=m-1
有一天他突发奇想,想把[a,b]区间中所有的数一个一个地变成1,这是一个巨大的无聊的工程,所以他想知道他最少得花多少操作才能达到目 的。
代码:显示WA
- #include <stdio.h>
-
#include <math.h>
-
#include <stdlib.h>
-
-
int prime(int);
-
-
int main(void)
-
{
-
int t1,k,num,c,b,i;
-
int pri[100002];
-
pri[0]=pri[1]=0;
-
for (i=2;i<=100000;i++)
-
{
-
if(prime(i)) pri[i]=1;
-
else
-
{
-
pri[i]=pri[i-1]+1;
-
for(k=2;k<i;k++)
-
{
-
if((pri[k]==1)&&(i%k==0))
-
{
-
t1=pri[i/k]+1;
-
if(t1<=pri[i]) pri[i]=t1;
-
break;
-
}
-
}
-
}
-
}
-
while(scanf("%d %d",&c,&b)==2)
-
{
-
num=0;
-
for(i=c;i<=b;i++) num=num+pri[i];
-
printf("%d\n",num);
-
}
-
return 0;
-
}
-
-
int prime(int num3)
-
{
-
int i;
-
if(num3==2) return 1;
-
if(num3%2==0) return 0;
-
for(i=3;i<=sqrt((double)num3);i+=2) {if(num3%i==0) return 0;}
-
return 1;
-
}
阅读(1398) | 评论(0) | 转发(0) |