/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013,郑州大学SIAS国际学院
* 作 者: 王 杰
* 完成日期:2013 年 11 月 8 日
*
* 对任务及求解方法的描述部分:
* 输入描述: 略或见注释、总结
* 问题描述: 略或见注释、总结
* 程序输出: 略或见注释、总结
* 问题分析: 略或见注释、总结
* 算法设计: 略或见注释、总结
*/
#include<stdio.h>
int main()
{
int s[1000];
int n,k;
scanf("%d%d",&n,&k);
for(int j=0;j<n;j++){
s[j]=1;
}
for(int i=2;i<=k;i++){ //这里的变量定义很有讲究,包括怎么去巧妙的把这些变量有机的联系在一起
for(int p=i-1;p<n;p+=i){
if(s[p]==1) //这里不能用两个if语句,否则会出错,否则这个嵌套for就相当于没有做一样!用一个if-else就解决了
s[p]=0; //两个if的意思是,第一个改过来,第二个在改回原样,所以会抹掉嵌套循环的作用
else
s[p]=1;
}
}
for(int q=0;q<n;q++){
if(s[q]==1)
printf("%d ",q+1);
}
return 0;
}
运行结果:
总结:变量的定义以及之间怎么巧妙的有机的联系起来。if语句的使用以及程序的流程(见注释)( if语句不等于if-else语句 )