问题描述:除去次方数
作者:何知令
完成时间:2017年8月1日
输入:无
作者:何知令
完成时间:2017年8月1日
输入:无
输出:10000以内除去次方数剩余的数的数量
算法思想:爆搜和打表,依次把每个数的每一个次方数找出来将其状态置为0,最后统计所有1的数量
代码如下:
/*
问题描述:除去次方数
作者:何知令
完成时间:2017年8月1日
输入:无
输出:10000以内除去次方数剩余的数的数量
*/
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main()
{
int i,j;
int S=0;
long long k;
int states[N];
for(i=0; i<N; i++)
states[i]=1;
for(i=1; i<N; i++)
{
k=i;
for(j=1; j<N; j++)
{
if(k*i<N)
{
states[k*i]=0;
k=k*i;
}
else
break;
}
}
for(i=1; i<N; i++)
if(states[i]==1)
S++;
printf("%d",S);
return 0;
}
程序运行结果展示:
知识点总结:打表和爆搜
学习心得:往个人主页一看,自己居然在7月份没有发表任何文章,懒惰之极